Merge "Refactored Special:ActiveUsers queries to remove filesort/temp table."
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 9 May 2013 14:50:42 +0000 (14:50 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 9 May 2013 14:50:42 +0000 (14:50 +0000)
160 files changed:
RELEASE-NOTES-1.22
api.php
docs/hooks.txt
docs/skin.txt
img_auth.php
includes/AutoLoader.php
includes/DefaultSettings.php
includes/Defines.php
includes/GlobalFunctions.php
includes/Init.php
includes/OutputPage.php
includes/Pager.php
includes/Setup.php
includes/Skin.php
includes/SkinLegacy.php [deleted file]
includes/User.php
includes/WebRequest.php
includes/WebStart.php
includes/WikiPage.php
includes/api/ApiQueryInfo.php
includes/db/CloneDatabase.php
includes/db/Database.php
includes/db/DatabaseMssql.php
includes/db/DatabaseMysql.php
includes/db/DatabaseOracle.php
includes/db/DatabasePostgres.php
includes/db/DatabaseSqlite.php
includes/externalstore/ExternalStore.php
includes/filebackend/FileBackendStore.php
includes/filebackend/SwiftFileBackend.php
includes/filerepo/FileRepo.php
includes/installer/Installer.i18n.php
includes/installer/Installer.php
includes/job/JobQueue.php
includes/parser/CoreLinkFunctions.php [deleted file]
includes/parser/Parser.php
includes/parser/Parser_LinkHooks.php [deleted file]
includes/parser/Tidy.php
includes/profiler/Profiler.php
includes/profiler/ProfilerSimpleUDP.php
includes/search/SearchEngine.php
includes/specials/SpecialContributions.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialPreferences.php
includes/specials/SpecialUserlogin.php
includes/templates/UsercreateVForm.php
index.php
languages/Language.php
languages/LanguageConverter.php
languages/messages/MessagesAf.php
languages/messages/MessagesAng.php
languages/messages/MessagesAr.php
languages/messages/MessagesAs.php
languages/messages/MessagesAst.php
languages/messages/MessagesBa.php
languages/messages/MessagesBcl.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBn.php
languages/messages/MessagesBr.php
languages/messages/MessagesBxr.php [new file with mode: 0644]
languages/messages/MessagesCa.php
languages/messages/MessagesCe.php
languages/messages/MessagesCs.php
languages/messages/MessagesCy.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesEl.php
languages/messages/MessagesEn.php
languages/messages/MessagesEo.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesFi.php
languages/messages/MessagesFo.php
languages/messages/MessagesFr.php
languages/messages/MessagesGl.php
languages/messages/MessagesGu.php
languages/messages/MessagesHak.php
languages/messages/MessagesHe.php
languages/messages/MessagesHu.php
languages/messages/MessagesId.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesKn.php
languages/messages/MessagesKo.php
languages/messages/MessagesKrc.php
languages/messages/MessagesKsh.php
languages/messages/MessagesLa.php
languages/messages/MessagesLb.php
languages/messages/MessagesLv.php
languages/messages/MessagesLzh.php
languages/messages/MessagesMhr.php
languages/messages/MessagesMin.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMs.php
languages/messages/MessagesNb.php
languages/messages/MessagesNds_nl.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesOs.php
languages/messages/MessagesPa.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPs.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesRm.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesSah.php
languages/messages/MessagesSi.php
languages/messages/MessagesSk.php
languages/messages/MessagesSl.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSv.php
languages/messages/MessagesTe.php
languages/messages/MessagesTh.php
languages/messages/MessagesUk.php
languages/messages/MessagesUz.php
languages/messages/MessagesVec.php
languages/messages/MessagesVi.php
languages/messages/MessagesVo.php
languages/messages/MessagesYi.php
languages/messages/MessagesYo.php
languages/messages/MessagesYue.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
load.php
maintenance/copyFileBackend.php
maintenance/doMaintenance.php
maintenance/hiphop/compiler.conf [deleted file]
maintenance/hiphop/extra-files [deleted file]
maintenance/hiphop/make [deleted file]
maintenance/hiphop/run-server [changed mode: 0644->0755]
maintenance/hiphop/server.conf
maintenance/jsduck/categories.json
maintenance/syncFileBackend.php
mw-config/index.php
profileinfo.php
resources/mediawiki.action/mediawiki.action.edit.js
resources/mediawiki.special/mediawiki.special.preferences.css
resources/mediawiki/mediawiki.js
resources/mediawiki/mediawiki.user.js
resources/mediawiki/mediawiki.util.js
skins/common/shared.css
tests/parser/parserTest.inc
tests/parser/parserTests.txt
tests/phpunit/bootstrap.php
tests/phpunit/includes/db/DatabaseSqliteTest.php
tests/phpunit/includes/parser/NewParserTest.php
tests/phpunit/languages/LanguageSrTest.php
tests/phpunit/languages/LanguageUzTest.php
tests/phpunit/suites/UploadFromUrlTestSuite.php
tests/qunit/data/testrunner.js
tests/qunit/suites/resources/mediawiki/mediawiki.test.js
thumb.php

index 761bacc..50444a7 100644 (file)
@@ -58,6 +58,12 @@ production.
 * HTMLForm will turn multiselect checkboxes into a Chosen interface when setting cssclass 'mw-chosen'
 * rebuildLocalisationCache learned --lang option. Let you rebuild l10n caches
   of the specified languages instead of all of them.
+* New GetNewMessagesAlert hook allowing extensions to disable or modify the new
+  messages alert
+* New wgUserNewMsgRevisionId JS global for logged in users. This will be null
+  if the user has no new talk page messages. Otherwise it will be set to the
+  revision ID of the oldest new talk page message. This will allow gadgets and
+  extensions to create their own new message alerts on the client side.
 * mediawiki.log: Added log.warn wrapper (uses console.warn and console.trace).
 * mediawiki.log: Implemented log.deprecate. This method defines a property and
   uses ES5 getter/setter to emit a warning when they are used.
@@ -81,6 +87,7 @@ production.
   show the most up to date result always instead of being a revision behind.
 * A bias in wfRandomString() toward digits 1-7 has been corrected. Generated
   strings will now start with digits 0 and 8-f as often as they should.
+* (bug 45371) Removed Parser_LinkHooks and CoreLinkFunctions classes.
 
 === API changes in 1.22 ===
 * (bug 46626) xmldoublequote parameter was removed. Because of a bug, the
@@ -102,6 +109,7 @@ production.
   stored in the database.
 * (bug 47219) Allow specifying change type of Wikipedia feed items
 * prop=imageinfo now allows setting iiurlheight without setting iiurlwidth
+* prop=info now adds the content model of the title.
 
 === Languages updated in 1.22===
 
@@ -109,12 +117,16 @@ MediaWiki supports over 350 languages. Many localisations are updated
 regularly. Below only new and removed languages are listed, as well as
 changes to languages because of Bugzilla reports.
 
+* (bug 46751) Made Buryat (Russia) (буряад) (bxr) fallback to Russian.
+
 === Other changes in 1.22 ===
 * redirect.php was removed. It was unused.
 * ClickTracking integration was dropped from the mediaWiki.user.bucket
   JavaScript function. The 'tracked' option is now ignored.
-* BREAKING CHANGE: Legacy skins Simple, MySkin and Standard were all removed.
-  Nostalgia was moved to an extension.
+* BREAKING CHANGE: Legacy skins Simple, MySkin, Chick, Standard and Nostalgia
+  were all removed. (Nostalgia was moved to an extension.) The SkinLegacy and
+  LegacyTemplate classes that supported them were removed as well and are now a
+  part of the Nostalgia extension.
 * Event namespace used by jquery.makeCollapsible has been changed from
   'mw-collapse' to 'mw-collapsible' for consistency with the module name.
 * BREAKING CHANGE: The "ExternalAuth" authentication subsystem was removed, along
@@ -129,6 +141,8 @@ changes to languages because of Bugzilla reports.
 * (bug 46680) "Return to" links are no longer tagged with rel="next".
 * BREAKING CHANGE: mw.util.tooltipAccessKeyRegexp: The match group for the
   accesskey character is now $6 instead of $5.
+* HipHop compiler (hphpc) support was removed. HipHop VM support (hhvm) was
+  added.
 * A new Special:Redirect page was added, providing lookup by revision ID,
   user ID, or file name.  The old Special:Filepath page was reimplemented
   to redirect through Special:Redirect.
diff --git a/api.php b/api.php
index bc90229..b9efe2c 100644 (file)
--- a/api.php
+++ b/api.php
@@ -41,11 +41,7 @@ if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.
 }
 
 // Initialise common code.
-if ( isset( $_SERVER['MW_COMPILED'] ) ) {
-       require ( 'core/includes/WebStart.php' );
-} else {
-       require ( __DIR__ . '/includes/WebStart.php' );
-}
+require ( __DIR__ . '/includes/WebStart.php' );
 
 wfProfileIn( 'api.php' );
 $starttime = microtime( true );
index 0b835c2..a292997 100644 (file)
@@ -1193,6 +1193,14 @@ to do this unless they broke backwards compatibility with a previous version of
 the media handler metadata output.
 &$version: Array of version strings
 
+'GetNewMessagesAlert': Disable or modify the new messages alert
+&$newMessagesAlert: An empty string by default. If the user has new talk page
+messages, this should be populated with an alert message to that effect
+$newtalks: An empty array if the user has no new messages or an array containing
+links and revisions if there are new messages (See User::getNewMessageLinks)
+$user: The user object of the user who is loading the page
+$out: OutputPage object (to check what type of page the user is on)
+
 'GetPreferences': Modify user preferences.
 $user: User whose preferences are being modified.
 &$preferences: Preferences description array, to be fed to an HTMLForm object
index fab27b8..2f414cb 100644 (file)
@@ -1,40 +1,41 @@
 skin.txt
 
-MediaWiki's default skin is called Vector. Vector was introduced in
-the 1.16 release (2010) and has been set as the default in MediaWiki since
-the 1.17 release (2011). This replaced the popular skin, Monobook which
-had been been the default since MediaWiki 1.3 (2004). Vector is now the
-default skin on Wikimedia Projects.
+MediaWiki includes four core skins:
 
-There are three legacy skins which were introduced before MediaWiki 1.3:
+* Vector: The default skin. Introduced in the 1.16 release (2010), it has been
+  set as the default in MediaWiki since the 1.17 release (2011), replacing
+  Monobook.
 
-* Standard (a.k.a. Classic): The old default skin written by Lee Crocker 
-during the phase 3 rewrite, in 2002.
+* Monobook: Named after the black-and-white photo of a book in the page
+  background. Introduced in the 2004 release of 1.3, it had been been the
+  default skin since then, before being replaced by Vector.
 
-* Nostalgia: A skin which looks like Wikipedia did in its first year (2001). 
-This skin is now used for the old Wikipedia snapshot at
-http://nostalgia.wikipedia.org/
+* Modern: An attractive blue/grey theme with sidebar and top bar. Derived from
+  Monobook.
 
-* Cologne Blue: A nicer-looking alternative to Standard.
+* Cologne Blue: A lightweight skin with minimal formatting. The oldest of
+  currently bundled skins, largely rewritten in 2012 while keeping the looks.
 
-The other skin that is widely used (and is the MediaWiki default before 1.17)
-is Monobook.
 
-* Monobook: Named after the black-and-white photo of a book, in the page background.
-This was introduced in the 2004 release of 1.3
+Several legacy skins were removed in the 1.22 release, as the burden of
+supporting them became too heavy to bear. Those were:
 
-And there are four Monobook-derived skins which have been introduced since 1.3:
+* Standard (a.k.a. Classic): The old default skin written by Lee Crocker during
+  the phase 3 rewrite, in 2002.
 
-* MySkin: Monobook without the CSS. The idea is that you customise it using user
-or site CSS (see below)
+* Nostalgia: A skin which looks like Wikipedia did in its first year (2001).
+  This skin is now used for the old Wikipedia snapshot at
+  http://nostalgia.wikipedia.org/
 
-* Chick: A lightweight Monobook skin with no sidebar, the sidebar links are
-given at the bottom of the page instead, as in the unstyled MySkin.
+* Chick: A lightweight Monobook skin with no sidebar, the sidebar links were
+  given at the bottom of the page instead.
 
-* Simple: A lightweight skin with a simple white-background sidebar and no
-top bar.
+* Simple: A lightweight skin with a simple white-background sidebar and no top
+  bar.
+
+* MySkin: Monobook without the CSS. The idea was that you customise it using
+  user or site CSS.
 
-* Modern: An attractive blue/grey theme with sidebar and top bar.
 
 == Custom CSS/JS ==
 
@@ -42,16 +43,16 @@ It is possible to customise the site CSS and JavaScript without editing any
 source files. This is done by editing some pages on the wiki:
 
 * [[MediaWiki:Common.css]] -- for skin-independent CSS
-* [[MediaWiki:Monobook.css]], [[MediaWiki:Simple.css]], etc. -- for
-skin-dependent CSS
-* [[MediaWiki:Common.js]], [[MediaWiki:Monobook.js]], etc. -- for custom
-site JavaScript
+* [[MediaWiki:Common.js]] -- for skin-independent JavaScript
+* [[MediaWiki:Vector.css]], [[MediaWiki:Monobook.css]], etc. -- for
+  skin-dependent CSS
+* [[MediaWiki:Vector.js]], [[MediaWiki:Monobook.js]], etc. -- for
+  skin-dependent JavaScript
 
 These can also be customised on a per-user basis, by editing
-[[User:<name>/monobook.css]], [[User:<name>/monobook.js]], etc.
+[[User:<name>/vector.css]], [[User:<name>/vector.js]], etc.
 
-This feature has led to a wide variety of "user styles" becoming available,
-which change the appearance of Monobook or MySkin:
+This feature has led to a wide variety of "user styles" becoming available:
 
 http://www.mediawiki.org/wiki/Manual:Gallery_of_user_styles
 
index ccaa8af..667a40a 100644 (file)
  */
 
 define( 'MW_NO_OUTPUT_COMPRESSION', 1 );
-if ( isset( $_SERVER['MW_COMPILED'] ) ) {
-       require ( 'core/includes/WebStart.php' );
-} else {
-       require ( __DIR__ . '/includes/WebStart.php' );
-}
+require ( __DIR__ . '/includes/WebStart.php' );
 wfProfileIn( 'img_auth.php' );
 
 # Set action base paths so that WebRequest::getPathInfo()
index 8c7b542..7b25db8 100644 (file)
@@ -773,12 +773,10 @@ $wgAutoloadLocalClasses = array(
 
        # includes/parser
        'CacheTime' => 'includes/parser/CacheTime.php',
-       'CoreLinkFunctions' => 'includes/parser/CoreLinkFunctions.php',
        'CoreParserFunctions' => 'includes/parser/CoreParserFunctions.php',
        'CoreTagHooks' => 'includes/parser/CoreTagHooks.php',
        'DateFormatter' => 'includes/parser/DateFormatter.php',
        'LinkHolderArray' => 'includes/parser/LinkHolderArray.php',
-       'LinkMarkerReplacer' => 'includes/parser/Parser_LinkHooks.php',
        'MWTidy' => 'includes/parser/Tidy.php',
        'MWTidyWrapper' => 'includes/parser/Tidy.php',
        'PPCustomFrame_DOM' => 'includes/parser/Preprocessor_DOM.php',
@@ -806,7 +804,6 @@ $wgAutoloadLocalClasses = array(
        'ParserOptions' => 'includes/parser/ParserOptions.php',
        'ParserOutput' => 'includes/parser/ParserOutput.php',
        'Parser_DiffTest' => 'includes/parser/Parser_DiffTest.php',
-       'Parser_LinkHooks' => 'includes/parser/Parser_LinkHooks.php',
        'Preprocessor' => 'includes/parser/Preprocessor.php',
        'Preprocessor_DOM' => 'includes/parser/Preprocessor_DOM.php',
        'Preprocessor_Hash' => 'includes/parser/Preprocessor_Hash.php',
index 1f64b33..407ac8f 100644 (file)
@@ -3583,7 +3583,8 @@ $wgHitcounterUpdateFreq = 1;
 
 /**
  * How many days user must be idle before he is considered inactive. Will affect
- * the number shown on Special:Statistics and Special:ActiveUsers special page.
+ * the number shown on Special:Statistics, Special:ActiveUsers, and the
+ * {{NUMBEROFACTIVEUSERS}} magic word in wikitext.
  * You might want to leave this as the default value, to provide comparable
  * numbers between different wikis.
  */
@@ -6180,56 +6181,6 @@ $wgMaxBacklinksInvalidate = false;
 
 /** @} */ # End job queue }
 
-/************************************************************************//**
- * @name   HipHop compilation
- * @{
- */
-
-/**
- * The build directory for HipHop compilation.
- * Defaults to '$IP/maintenance/hiphop/build'.
- */
-$wgHipHopBuildDirectory = false;
-
-/**
- * The HipHop build type. Can be either "Debug" or "Release".
- */
-$wgHipHopBuildType = 'Debug';
-
-/**
- * Number of parallel processes to use during HipHop compilation, or "detect"
- * to guess from system properties.
- */
-$wgHipHopCompilerProcs = 'detect';
-
-/**
- * Filesystem extensions directory. Defaults to $IP/../extensions.
- *
- * To compile extensions with HipHop, set $wgExtensionsDirectory correctly,
- * and use code like:
- * @code
- *    require( MWInit::extensionSetupPath( 'Extension/Extension.php' ) );
- * @endcode
- *
- * to include the extension setup file from LocalSettings.php. It is not
- * necessary to set this variable unless you use MWInit::extensionSetupPath().
- */
-$wgExtensionsDirectory = false;
-
-/**
- * A list of files that should be compiled into a HipHop build, in addition to
- * those listed in $wgAutoloadClasses. Add to this array in an extension setup
- * file in order to add files to the build.
- *
- * The files listed here must either be either absolute paths under $IP or
- * under $wgExtensionsDirectory, or paths relative to the virtual source root
- * "$IP/..", i.e. starting with "phase3" for core files, and "extensions" for
- * extension files.
- */
-$wgCompiledFiles = array();
-
-/** @} */ # End of HipHop compilation }
-
 /************************************************************************//**
  * @name   Miscellaneous
  * @{
@@ -6380,6 +6331,12 @@ $wgSiteTypes = array(
        'mediawiki' => 'MediaWikiSite',
 );
 
+/**
+ * Formerly a list of files for HipHop compilation
+ * @deprecated since 1.22
+ */
+$wgCompiledFiles = array();
+
 /**
  * For really cool vim folding this needs to be at the end:
  * vim: foldmarker=@{,@} foldmethod=marker
index cd6b158..86c5520 100644 (file)
@@ -236,11 +236,6 @@ define( 'SFH_NO_HASH', 1 );
 define( 'SFH_OBJECT_ARGS', 2 );
 /**@}*/
 
-/**
- * Flags for Parser::setLinkHook
- */
-define( 'SLH_PATTERN', 1 );
-
 /**
  * Flags for Parser::replaceLinkHolders
  */
index 51c67a6..5c45577 100644 (file)
@@ -93,26 +93,6 @@ if ( !function_exists( 'mb_strrpos' ) ) {
                return Fallback::mb_strrpos( $haystack, $needle, $offset, $encoding );
        }
 }
-
-// Support for Wietse Venema's taint feature
-if ( !function_exists( 'istainted' ) ) {
-       /**
-        * @codeCoverageIgnore
-        * @return int
-        */
-       function istainted( $var ) {
-               return 0;
-       }
-       /** @codeCoverageIgnore */
-       function taint( $var, $level = 0 ) {}
-       /** @codeCoverageIgnore */
-       function untaint( $var, $level = 0 ) {}
-       define( 'TC_HTML', 1 );
-       define( 'TC_SHELL', 1 );
-       define( 'TC_MYSQL', 1 );
-       define( 'TC_PCRE', 1 );
-       define( 'TC_SELF', 1 );
-}
 /// @endcond
 
 /**
@@ -276,24 +256,6 @@ function wfObjectToArray( $objOrArray, $recursive = true ) {
        return $array;
 }
 
-/**
- * Wrapper around array_map() which also taints variables
- *
- * @param  $function Callback
- * @param  $input Array
- * @return Array
- */
-function wfArrayMap( $function, $input ) {
-       $ret = array_map( $function, $input );
-       foreach ( $ret as $key => $value ) {
-               $taint = istainted( $input[$key] );
-               if ( $taint ) {
-                       taint( $ret[$key], $taint );
-               }
-       }
-       return $ret;
-}
-
 /**
  * Get a random decimal value between 0 and 1, in a way
  * not likely to give duplicate values for any realistic
index 835ffdb..64431f0 100644 (file)
@@ -2,6 +2,9 @@
 /**
  * Some functions that are useful during startup.
  *
+ * This class previously contained some functionality related to a PHP compiler
+ * called hphpc. That compiler has now been discontinued.
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
 
 /**
  * Some functions that are useful during startup.
+ *
+ * This class previously contained some functionality related to a PHP compiler
+ * called hphpc. That compiler has now been discontinued. All methods are now
+ * deprecated.
  */
 class MWInit {
        static $compilerVersion;
 
        /**
-        * Get the version of HipHop used to compile, or false if MediaWiki was not
-        * compiled. This works by having our build script insert a special function
-        * into the compiled code.
+        * @deprecated since 1.22
         */
        static function getCompilerVersion() {
-               if ( self::$compilerVersion === null ) {
-                       if ( self::functionExists( 'wfHipHopCompilerVersion' ) ) {
-                               self::$compilerVersion = wfHipHopCompilerVersion();
-                       } else {
-                               self::$compilerVersion = false;
-                       }
-               }
-               return self::$compilerVersion;
+               return false;
        }
 
        /**
         * Returns true if we are running under HipHop, whether in compiled or
         * interpreted mode.
         *
+        * @deprecated since 1.22
         * @return bool
         */
        static function isHipHop() {
-               return function_exists( 'hphp_thread_set_warmup_enabled' );
+               return defined( 'HPHP_VERSION' );
        }
 
        /**
-        * Get a fully-qualified path for a source file relative to $IP. Including
-        * such a path under HipHop will force the file to be interpreted. This is
-        * useful for configuration files.
+        * Get a fully-qualified path for a source file relative to $IP.
+        * @deprecated since 1.22
         *
         * @param $file string
         *
@@ -67,117 +65,39 @@ class MWInit {
        }
 
        /**
-        * If we are running code compiled by HipHop, this will pass through the
-        * input path, assumed to be relative to $IP. If the code is interpreted,
-        * it will converted to a fully qualified path. It is necessary to use a
-        * path which is relative to $IP in order to make HipHop use its compiled
-        * code.
-        *
+        * @deprecated since 1.22
         * @param $file string
-        *
         * @return string
         */
        static function compiledPath( $file ) {
                global $IP;
-
-               if ( defined( 'MW_COMPILED' ) ) {
-                       return "phase3/$file";
-               } else {
-                       return "$IP/$file";
-               }
-       }
-
-       /**
-        * The equivalent of MWInit::interpretedPath() but for files relative to the
-        * extensions directory.
-        *
-        * @param $file string
-        * @return string
-        */
-       static function extInterpretedPath( $file ) {
-               return self::getExtensionsDirectory() . '/' . $file;
+               return "$IP/$file";
        }
 
        /**
-        * The equivalent of MWInit::compiledPath() but for files relative to the
-        * extensions directory. Any files referenced in this way must be registered
-        * for compilation by including them in $wgCompiledFiles.
+        * @deprecated since 1.22
         * @param $file string
         * @return string
         */
        static function extCompiledPath( $file ) {
-               if ( defined( 'MW_COMPILED' ) ) {
-                       return "extensions/$file";
-               } else {
-                       return self::getExtensionsDirectory() . '/' . $file;
-               }
+               return false;
        }
 
        /**
-        * Register an extension setup file and return its path for compiled
-        * inclusion. Use this function in LocalSettings.php to add extensions
-        * to the build. For example:
-        *
-        *    require( MWInit::extSetupPath( 'ParserFunctions/ParserFunctions.php' ) );
-        *
-        * @param string $extRel The path relative to the extensions directory, as defined by
-        *   $wgExtensionsDirectory.
-        *
-        * @return string
-        */
-       static function extSetupPath( $extRel ) {
-               $baseRel = "extensions/$extRel";
-               if ( defined( 'MW_COMPILED' ) ) {
-                       return $baseRel;
-               } else {
-                       global $wgCompiledFiles;
-                       $wgCompiledFiles[] = $baseRel;
-                       return self::getExtensionsDirectory() . '/' . $extRel;
-               }
-       }
-
-       /**
-        * @return bool|string
-        */
-       static function getExtensionsDirectory() {
-               global $wgExtensionsDirectory, $IP;
-               if ( $wgExtensionsDirectory === false ) {
-                       $wgExtensionsDirectory = "$IP/../extensions";
-               }
-               return $wgExtensionsDirectory;
-       }
-
-       /**
-        * Determine whether a class exists, using a method which works under HipHop.
-        *
-        * Note that it's not possible to implement this with any variant of
-        * class_exists(), because class_exists() returns false for classes which
-        * are compiled in.
-        *
-        * Calling class_exists() on a literal string causes the class to be made
-        * "volatile", which means (as of March 2011) that the class is broken and
-        * can't be used at all. So don't do that. See
-        * https://github.com/facebook/hiphop-php/issues/314
+        * Deprecated wrapper for class_exists()
+        * @deprecated since 1.22
         *
         * @param $class string
         *
         * @return bool
         */
        static function classExists( $class ) {
-               try {
-                       $r = new ReflectionClass( $class );
-               } catch ( ReflectionException $r ) {
-                       $r = false;
-               }
-               return $r !== false;
+               return class_exists( $class );
        }
 
        /**
-        * Determine whether a method exists within a class, using a method which works
-        * under HipHop.
-        *
-        * Note that under HipHop when method_exists is given a string for it's class
-        * such as to test for a static method has the same issues as class_exists does.
+        * Deprecated wrapper for method_exists()
+        * @deprecated since 1.22
         *
         * @param $class string
         * @param $method string
@@ -185,34 +105,25 @@ class MWInit {
         * @return bool
         */
        static function methodExists( $class, $method ) {
-               try {
-                       $r = new ReflectionMethod( $class, $method );
-               } catch ( ReflectionException $r ) {
-                       $r = false;
-               }
-               return $r !== false;
+               return method_exists( $class, $method );
        }
 
        /**
-        * Determine whether a function exists, using a method which works under
-        * HipHop.
+        * Deprecated wrapper for function_exists()
+        * @deprecated since 1.22
         *
         * @param $function string
         *
         * @return bool
         */
        static function functionExists( $function ) {
-               try {
-                       $r = new ReflectionFunction( $function );
-               } catch ( ReflectionException $r ) {
-                       $r = false;
-               }
-               return $r !== false;
+               return function_exists( $function );
        }
 
        /**
-        * Call a static method of a class with variable arguments without causing
-        * it to become volatile.
+        * Deprecated wrapper for call_user_func_array()
+        * @deprecated since 1.22
+        *
         * @param $className string
         * @param $methodName string
         * @param $args array
@@ -220,7 +131,6 @@ class MWInit {
         * @return mixed
         */
        static function callStaticMethod( $className, $methodName, $args ) {
-               $r = new ReflectionMethod( $className, $methodName );
-               return $r->invokeArgs( null, $args );
+               return call_user_func_array( array( $className, $methodName ), $args );
        }
 }
index 3abfff0..4a2b17a 100644 (file)
@@ -3062,6 +3062,7 @@ $templates
                        'wgCategories' => $this->getCategories(),
                        'wgBreakFrames' => $this->getFrameOptions() == 'DENY',
                        'wgPageContentLanguage' => $lang->getCode(),
+                       'wgPageContentModel' => $title->getContentModel(),
                        'wgSeparatorTransformTable' => $compactSeparatorTransTable,
                        'wgDigitTransformTable' => $compactDigitTransTable,
                        'wgDefaultDateFormat' => $lang->getDefaultDateFormat(),
@@ -3074,6 +3075,10 @@ $templates
                        $vars['wgUserEditCount'] = $user->getEditCount();
                        $userReg = wfTimestampOrNull( TS_UNIX, $user->getRegistration() );
                        $vars['wgUserRegistration'] = $userReg !== null ? ( $userReg * 1000 ) : null;
+                       // Get the revision ID of the oldest new message on the user's talk
+                       // page. This can be used for constructing new message alerts on
+                       // the client side.
+                       $vars['wgUserNewMsgRevisionId'] = $user->getNewMessageRevisionId();
                }
                if ( $wgContLang->hasVariants() ) {
                        $vars['wgUserVariant'] = $wgContLang->getPreferredVariant();
index 34df830..696c11b 100644 (file)
@@ -206,13 +206,25 @@ abstract class IndexPager extends ContextSource implements Pager {
                # Plus an extra row so that we can tell the "next" link should be shown
                $queryLimit = $this->mLimit + 1;
 
+               if ( $this->mOffset == '' ) {
+                       $isFirst = true;
+               } else {
+                       // If there's an offset, we may or may not be at the first entry.
+                       // The only way to tell is to run the query in the opposite
+                       // direction see if we get a row.
+                       $oldIncludeOffset = $this->mIncludeOffset;
+                       $this->mIncludeOffset = !$this->mIncludeOffset;
+                       $isFirst = !$this->reallyDoQuery( $this->mOffset, 1, !$descending )->numRows();
+                       $this->mIncludeOffset = $oldIncludeOffset;
+               }
+
                $this->mResult = $this->reallyDoQuery(
                        $this->mOffset,
                        $queryLimit,
                        $descending
                );
 
-               $this->extractResultInfo( $this->mOffset, $queryLimit, $this->mResult );
+               $this->extractResultInfo( $isFirst, $queryLimit, $this->mResult );
                $this->mQueryDone = true;
 
                $this->preprocessResults( $this->mResult );
@@ -269,11 +281,12 @@ abstract class IndexPager extends ContextSource implements Pager {
         * Extract some useful data from the result object for use by
         * the navigation bar, put it into $this
         *
-        * @param string $offset index offset, inclusive
+        * @param $isFirst bool: False if there are rows before those fetched (i.e.
+        *     if a "previous" link would make sense)
         * @param $limit Integer: exact query limit
         * @param $res ResultWrapper
         */
-       function extractResultInfo( $offset, $limit, ResultWrapper $res ) {
+       function extractResultInfo( $isFirst, $limit, ResultWrapper $res ) {
                $numRows = $res->numRows();
                if ( $numRows ) {
                        # Remove any table prefix from index field
@@ -311,11 +324,11 @@ abstract class IndexPager extends ContextSource implements Pager {
 
                if ( $this->mIsBackwards ) {
                        $this->mIsFirst = ( $numRows < $limit );
-                       $this->mIsLast = ( $offset == '' );
+                       $this->mIsLast = $isFirst;
                        $this->mLastShown = $firstIndex;
                        $this->mFirstShown = $lastIndex;
                } else {
-                       $this->mIsFirst = ( $offset == '' );
+                       $this->mIsFirst = $isFirst;
                        $this->mIsLast = ( $numRows < $limit );
                        $this->mLastShown = $lastIndex;
                        $this->mFirstShown = $firstIndex;
index 1ceee49..565ca49 100644 (file)
@@ -391,22 +391,20 @@ if ( $wgDebugToolbar && !$wgCommandLineMode ) {
        MWDebug::init();
 }
 
-if ( !defined( 'MW_COMPILED' ) ) {
-       if ( !MWInit::classExists( 'AutoLoader' ) ) {
-               require_once( "$IP/includes/AutoLoader.php" );
-       }
+if ( !class_exists( 'AutoLoader' ) ) {
+       require_once( "$IP/includes/AutoLoader.php" );
+}
 
-       wfProfileIn( $fname . '-exception' );
-       MWExceptionHandler::installHandler();
-       wfProfileOut( $fname . '-exception' );
+wfProfileIn( $fname . '-exception' );
+MWExceptionHandler::installHandler();
+wfProfileOut( $fname . '-exception' );
 
-       wfProfileIn( $fname . '-includes' );
-       require_once( "$IP/includes/normal/UtfNormalUtil.php" );
-       require_once( "$IP/includes/GlobalFunctions.php" );
-       require_once( "$IP/includes/ProxyTools.php" );
-       require_once( "$IP/includes/normal/UtfNormalDefines.php" );
-       wfProfileOut( $fname . '-includes' );
-}
+wfProfileIn( $fname . '-includes' );
+require_once( "$IP/includes/normal/UtfNormalUtil.php" );
+require_once( "$IP/includes/GlobalFunctions.php" );
+require_once( "$IP/includes/ProxyTools.php" );
+require_once( "$IP/includes/normal/UtfNormalDefines.php" );
+wfProfileOut( $fname . '-includes' );
 
 if ( $wgSecureLogin && substr( $wgServer, 0, 2 ) !== '//' ) {
        $wgSecureLogin = false;
index cc957c4..ca7a91b 100644 (file)
@@ -162,23 +162,19 @@ abstract class Skin extends ContextSource {
                $className = "Skin{$skinName}";
 
                # Grab the skin class and initialise it.
-               if ( !MWInit::classExists( $className ) ) {
+               if ( !class_exists( $className ) ) {
 
-                       if ( !defined( 'MW_COMPILED' ) ) {
-                               require_once( "{$wgStyleDirectory}/{$skinName}.php" );
-                       }
+                       require_once( "{$wgStyleDirectory}/{$skinName}.php" );
 
                        # Check if we got if not fallback to default skin
-                       if ( !MWInit::classExists( $className ) ) {
+                       if ( !class_exists( $className ) ) {
                                # DO NOT die if the class isn't found. This breaks maintenance
                                # scripts and can cause a user account to be unrecoverable
                                # except by SQL manipulation if a previously valid skin name
                                # is no longer valid.
                                wfDebug( "Skin class does not exist: $className\n" );
                                $className = 'SkinVector';
-                               if ( !defined( 'MW_COMPILED' ) ) {
-                                       require_once( "{$wgStyleDirectory}/Vector.php" );
-                               }
+                               require_once( "{$wgStyleDirectory}/Vector.php" );
                        }
                }
                $skin = new $className( $key );
@@ -1294,17 +1290,27 @@ abstract class Skin extends ContextSource {
        }
 
        /**
-        * Gets new talk page messages for the current user.
-        * @return MediaWiki message or if no new talk page messages, nothing
+        * Gets new talk page messages for the current user and returns an
+        * appropriate alert message (or an empty string if there are no messages)
+        * @return String
         */
        function getNewtalks() {
+
+               $newMessagesAlert = '';
+               $user = $this->getUser();
+               $newtalks = $user->getNewMessageLinks();
                $out = $this->getOutput();
 
-               $newtalks = $this->getUser()->getNewMessageLinks();
-               $ntl = '';
+               // Allow extensions to disable or modify the new messages alert
+               if ( !wfRunHooks( 'GetNewMessagesAlert', array( &$newMessagesAlert, $newtalks, $user, $out ) ) ) {
+                       return '';
+               }
+               if ( $newMessagesAlert ) {
+                       return $newMessagesAlert;
+               }
 
                if ( count( $newtalks ) == 1 && $newtalks[0]['wiki'] === wfWikiID() ) {
-                       $uTalkTitle = $this->getUser()->getTalkPage();
+                       $uTalkTitle = $user->getTalkPage();
 
                        if ( !$uTalkTitle->equals( $out->getTitle() ) ) {
                                $lastSeenRev = isset( $newtalks[0]['rev'] ) ? $newtalks[0]['rev'] : null;
@@ -1343,26 +1349,25 @@ abstract class Skin extends ContextSource {
                                );
 
                                if ( $nofAuthors >= 1 && $nofAuthors <= 10 ) {
-                                       $ntl = $this->msg(
+                                       $newMessagesAlert = $this->msg(
                                                'youhavenewmessagesfromusers',
                                                $newMessagesLink,
                                                $newMessagesDiffLink
                                        )->numParams( $nofAuthors );
                                } else {
                                        // $nofAuthors === 11 signifies "11 or more" ("more than 10")
-                                       $ntl = $this->msg(
+                                       $newMessagesAlert = $this->msg(
                                                $nofAuthors > 10 ? 'youhavenewmessagesmanyusers' : 'youhavenewmessages',
                                                $newMessagesLink,
                                                $newMessagesDiffLink
                                        );
                                }
-                               $ntl = $ntl->text();
+                               $newMessagesAlert = $newMessagesAlert->text();
                                # Disable Squid cache
                                $out->setSquidMaxage( 0 );
                        }
                } elseif ( count( $newtalks ) ) {
-                       // _>" " for BC <= 1.16
-                       $sep = str_replace( '_', ' ', $this->msg( 'newtalkseparator' )->escaped() );
+                       $sep = $this->msg( 'newtalkseparator' )->escaped();
                        $msgs = array();
 
                        foreach ( $newtalks as $newtalk ) {
@@ -1372,11 +1377,11 @@ abstract class Skin extends ContextSource {
                                );
                        }
                        $parts = implode( $sep, $msgs );
-                       $ntl = $this->msg( 'youhavenewmessagesmulti' )->rawParams( $parts )->escaped();
+                       $newMessagesAlert = $this->msg( 'youhavenewmessagesmulti' )->rawParams( $parts )->escaped();
                        $out->setSquidMaxage( 0 );
                }
 
-               return $ntl;
+               return $newMessagesAlert;
        }
 
        /**
diff --git a/includes/SkinLegacy.php b/includes/SkinLegacy.php
deleted file mode 100644 (file)
index 6f11837..0000000
+++ /dev/null
@@ -1,840 +0,0 @@
-<?php
-/**
- * Base class for legacy skins.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- */
-
-class SkinLegacy extends SkinTemplate {
-       var $useHeadElement = true;
-       protected $mWatchLinkNum = 0; // Appended to end of watch link id's
-
-       /**
-        * Add skin specific stylesheets
-        * @param $out OutputPage
-        */
-       function setupSkinUserCss( OutputPage $out ) {
-               $out->addModuleStyles( 'mediawiki.legacy.shared' );
-               $out->addModuleStyles( 'mediawiki.legacy.oldshared' );
-       }
-
-       public function commonPrintStylesheet() {
-               return true;
-       }
-}
-
-class LegacyTemplate extends BaseTemplate {
-
-       // How many search boxes have we made?  Avoid duplicate id's.
-       protected $searchboxes = '';
-
-       function execute() {
-               $this->html( 'headelement' );
-               echo $this->beforeContent();
-               $this->html( 'bodytext' );
-               echo "\n";
-               echo $this->afterContent();
-               $this->html( 'dataAfterContent' );
-               $this->printTrail();
-               echo "\n</body></html>";
-       }
-
-       /**
-        * This will be called immediately after the "<body>" tag.  Split into
-        * two functions to make it easier to subclass.
-        * @return string
-        */
-       function beforeContent() {
-               return $this->doBeforeContent();
-       }
-
-       function doBeforeContent() {
-               global $wgLang;
-               wfProfileIn( __METHOD__ );
-
-               $s = '';
-
-               $langlinks = $this->otherLanguages();
-               if ( $langlinks ) {
-                       $rows = 2;
-                       $borderhack = '';
-               } else {
-                       $rows = 1;
-                       $langlinks = false;
-                       $borderhack = 'class="top"';
-               }
-
-               $s .= "\n<div id='content'>\n<div id='topbar'>\n" .
-                       "<table cellspacing='0' style='width: 100%;'>\n<tr>\n";
-
-               if ( $this->getSkin()->qbSetting() == 0 ) {
-                       $s .= "<td class='top' style='text-align: left; vertical-align: top;' rowspan='{$rows}'>\n" .
-                               $this->getSkin()->logoText( $wgLang->alignStart() ) . '</td>';
-               }
-
-               $l = $wgLang->alignStart();
-               $s .= "<td {$borderhack} style='text-align: $l; vertical-align: top;'>\n";
-
-               $s .= $this->topLinks();
-               $s .= '<p class="subtitle">' . $this->pageTitleLinks() . "</p>\n";
-
-               $r = $wgLang->alignEnd();
-               $s .= "</td>\n<td {$borderhack} style='text-align: $r; vertical-align: top;' nowrap='nowrap'>";
-               $s .= $this->nameAndLogin();
-               $s .= "\n<br />" . $this->searchForm() . '</td>';
-
-               if ( $langlinks ) {
-                       $s .= "</tr>\n<tr>\n<td class='top' colspan=\"2\">$langlinks</td>\n";
-               }
-
-               $s .= "</tr>\n</table>\n</div>\n";
-               $s .= "\n<div id='article'>\n";
-
-               $notice = $this->getSkin()->getSiteNotice();
-
-               if ( $notice ) {
-                       $s .= "\n<div id='siteNotice'>$notice</div>\n";
-               }
-               $s .= $this->pageTitle();
-               $s .= $this->pageSubtitle();
-               $s .= $this->getSkin()->getCategories();
-
-               wfProfileOut( __METHOD__ );
-               return $s;
-       }
-
-       /**
-        * This gets called shortly before the "</body>" tag.
-        * @return String HTML to be put before "</body>"
-        */
-       function afterContent() {
-               return $this->doAfterContent();
-       }
-
-       /** overloaded by derived classes
-        * @return string
-        */
-       function doAfterContent() {
-               return '</div></div>';
-       }
-
-       function searchForm() {
-               global $wgRequest, $wgUseTwoButtonsSearchForm;
-
-               $search = $wgRequest->getText( 'search' );
-
-               $s = '<form id="searchform' . $this->searchboxes . '" name="search" class="inline" method="post" action="'
-                       . $this->getSkin()->escapeSearchLink() . "\">\n"
-                       . '<input type="text" id="searchInput' . $this->searchboxes . '" name="search" size="19" value="'
-                       . htmlspecialchars( substr( $search, 0, 256 ) ) . "\" />\n"
-                       . '<input type="submit" name="go" value="' . wfMessage( 'searcharticle' )->text() . '" />';
-
-               if ( $wgUseTwoButtonsSearchForm ) {
-                       $s .= '&#160;<input type="submit" name="fulltext" value="' . wfMessage( 'searchbutton' )->text() . "\" />\n";
-               } else {
-                       $s .= ' <a href="' . $this->getSkin()->escapeSearchLink() . '" rel="search">' . wfMessage( 'powersearch-legend' )->text() . "</a>\n";
-               }
-
-               $s .= '</form>';
-
-               // Ensure unique id's for search boxes made after the first
-               $this->searchboxes = $this->searchboxes == '' ? 2 : $this->searchboxes + 1;
-
-               return $s;
-       }
-
-       function pageStats() {
-               $ret = array();
-               $items = array( 'viewcount', 'credits', 'lastmod', 'numberofwatchingusers', 'copyright' );
-
-               foreach ( $items as $item ) {
-                       if ( $this->data[$item] !== false ) {
-                               $ret[] = $this->data[$item];
-                       }
-               }
-
-               return implode( ' ', $ret );
-       }
-
-       function topLinks() {
-               global $wgOut;
-
-               $s = array(
-                       $this->getSkin()->mainPageLink(),
-                       Linker::specialLink( 'Recentchanges' )
-               );
-
-               if ( $wgOut->isArticleRelated() ) {
-                       $s[] = $this->editThisPage();
-                       $s[] = $this->historyLink();
-               }
-
-               # Many people don't like this dropdown box
-               # $s[] = $this->specialPagesList();
-
-               if ( $this->variantLinks() ) {
-                       $s[] = $this->variantLinks();
-               }
-
-               if ( $this->extensionTabLinks() ) {
-                       $s[] = $this->extensionTabLinks();
-               }
-
-               // @todo FIXME: Is using Language::pipeList impossible here? Do not quite understand the use of the newline
-               return implode( $s, wfMessage( 'pipe-separator' )->escaped() . "\n" );
-       }
-
-       /**
-        * Language/charset variant links for classic-style skins
-        * @return string
-        */
-       function variantLinks() {
-               $s = '';
-
-               /* show links to different language variants */
-               global $wgDisableLangConversion, $wgLang;
-
-               $title = $this->getSkin()->getTitle();
-               $lang = $title->getPageLanguage();
-               $variants = $lang->getVariants();
-
-               if ( !$wgDisableLangConversion && count( $variants ) > 1
-                       && !$title->isSpecialPage() ) {
-                       foreach ( $variants as $code ) {
-                               $varname = $lang->getVariantname( $code );
-
-                               $s = $wgLang->pipeList( array(
-                                       $s,
-                                       '<a href="' . htmlspecialchars( $title->getLocalURL( array( 'variant' => $code ) ) ) . '" lang="' . $code . '" hreflang="' . $code . '">' . htmlspecialchars( $varname ) . '</a>'
-                               ) );
-                       }
-               }
-
-               return $s;
-       }
-
-       /**
-        * Compatibility for extensions adding functionality through tabs.
-        * Eventually these old skins should be replaced with SkinTemplate-based
-        * versions, sigh...
-        * @return string
-        * @todo Exterminate! ...that, and replace it with normal SkinTemplate stuff
-        */
-       function extensionTabLinks() {
-               $tabs = array();
-               $out = '';
-               $s = array();
-               wfRunHooks( 'SkinTemplateTabs', array( $this->getSkin(), &$tabs ) );
-               foreach ( $tabs as $tab ) {
-                       $s[] = Xml::element( 'a',
-                               array( 'href' => $tab['href'] ),
-                               $tab['text'] );
-               }
-
-               if ( count( $s ) ) {
-                       global $wgLang;
-
-                       $out = wfMessage( 'pipe-separator' )->escaped();
-                       $out .= $wgLang->pipeList( $s );
-               }
-
-               return $out;
-       }
-
-       function bottomLinks() {
-               global $wgOut, $wgUser;
-               $sep = wfMessage( 'pipe-separator' )->escaped() . "\n";
-
-               $s = '';
-               if ( $wgOut->isArticleRelated() ) {
-                       $element[] = '<strong>' . $this->editThisPage() . '</strong>';
-
-                       if ( $wgUser->isLoggedIn() ) {
-                               $element[] = $this->watchThisPage();
-                       }
-
-                       $element[] = $this->talkLink();
-                       $element[] = $this->historyLink();
-                       $element[] = $this->whatLinksHere();
-                       $element[] = $this->watchPageLinksLink();
-
-                       $title = $this->getSkin()->getTitle();
-
-                       if (
-                               $title->getNamespace() == NS_USER ||
-                               $title->getNamespace() == NS_USER_TALK
-                       ) {
-                               $id = User::idFromName( $title->getText() );
-                               $ip = User::isIP( $title->getText() );
-
-                               # Both anons and non-anons have contributions list
-                               if ( $id || $ip ) {
-                                       $element[] = $this->userContribsLink();
-                               }
-
-                               if ( $this->getSkin()->showEmailUser( $id ) ) {
-                                       $element[] = $this->emailUserLink();
-                               }
-                       }
-
-                       $s = implode( $element, $sep );
-
-                       if ( $title->getArticleID() ) {
-                               $s .= "\n<br />";
-
-                               // Delete/protect/move links for privileged users
-                               if ( $wgUser->isAllowed( 'delete' ) ) {
-                                       $s .= $this->deleteThisPage();
-                               }
-
-                               if ( $wgUser->isAllowed( 'protect' ) && $title->getRestrictionTypes() ) {
-                                       $s .= $sep . $this->protectThisPage();
-                               }
-
-                               if ( $wgUser->isAllowed( 'move' ) ) {
-                                       $s .= $sep . $this->moveThisPage();
-                               }
-                       }
-
-                       $s .= "<br />\n" . $this->otherLanguages();
-               }
-
-               return $s;
-       }
-
-       function otherLanguages() {
-               global $wgOut, $wgLang, $wgHideInterlanguageLinks;
-
-               if ( $wgHideInterlanguageLinks ) {
-                       return '';
-               }
-
-               $a = $wgOut->getLanguageLinks();
-
-               if ( 0 == count( $a ) ) {
-                       return '';
-               }
-
-               $s = wfMessage( 'otherlanguages' )->text() . wfMessage( 'colon-separator' )->text();
-               $first = true;
-
-               if ( $wgLang->isRTL() ) {
-                       $s .= '<span dir="ltr">';
-               }
-
-               foreach ( $a as $l ) {
-                       if ( !$first ) {
-                               $s .= wfMessage( 'pipe-separator' )->escaped();
-                       }
-
-                       $first = false;
-
-                       $nt = Title::newFromText( $l );
-                       $text = Language::fetchLanguageName( $nt->getInterwiki() );
-
-                       $s .= Html::element( 'a',
-                               array( 'href' => $nt->getFullURL(), 'title' => $nt->getText(), 'class' => "external" ),
-                               $text == '' ? $l : $text );
-               }
-
-               if ( $wgLang->isRTL() ) {
-                       $s .= '</span>';
-               }
-
-               return $s;
-       }
-
-       /**
-        * Show a drop-down box of special pages
-        * @return string
-        */
-       function specialPagesList() {
-               global $wgScript;
-
-               $select = new XmlSelect( 'title' );
-               $pages = SpecialPageFactory::getUsablePages();
-               array_unshift( $pages, SpecialPageFactory::getPage( 'SpecialPages' ) );
-               foreach ( $pages as $obj ) {
-                       $select->addOption( $obj->getDescription(),
-                               $obj->getTitle()->getPrefixedDBkey() );
-               }
-
-               return Html::rawElement( 'form',
-                       array( 'id' => 'specialpages', 'method' => 'get', 'action' => $wgScript ),
-                       $select->getHTML() . Xml::submitButton( wfMessage( 'go' )->text() ) );
-       }
-
-       function pageTitleLinks() {
-               global $wgOut, $wgUser, $wgRequest, $wgLang;
-
-               $oldid = $wgRequest->getVal( 'oldid' );
-               $diff = $wgRequest->getVal( 'diff' );
-               $action = $wgRequest->getText( 'action' );
-
-               $skin = $this->getSkin();
-               $title = $skin->getTitle();
-
-               $s[] = $this->printableLink();
-               $disclaimer = $skin->disclaimerLink(); # may be empty
-
-               if ( $disclaimer ) {
-                       $s[] = $disclaimer;
-               }
-
-               $privacy = $skin->privacyLink(); # may be empty too
-
-               if ( $privacy ) {
-                       $s[] = $privacy;
-               }
-
-               if ( $wgOut->isArticleRelated() ) {
-                       if ( $title->getNamespace() == NS_FILE ) {
-                               $image = wfFindFile( $title );
-
-                               if ( $image ) {
-                                       $href = $image->getURL();
-                                       $s[] = Html::element( 'a', array( 'href' => $href,
-                                               'title' => $href ), $title->getText() );
-
-                               }
-                       }
-               }
-
-               if ( 'history' == $action || isset( $diff ) || isset( $oldid ) ) {
-                       $s[] .= Linker::linkKnown(
-                               $title,
-                               wfMessage( 'currentrev' )->text()
-                       );
-               }
-
-               if ( $wgUser->getNewtalk() ) {
-                       # do not show "You have new messages" text when we are viewing our
-                       # own talk page
-                       if ( !$title->equals( $wgUser->getTalkPage() ) ) {
-                               $tl = Linker::linkKnown(
-                                       $wgUser->getTalkPage(),
-                                       wfMessage( 'newmessageslink' )->escaped(),
-                                       array(),
-                                       array( 'redirect' => 'no' )
-                               );
-
-                               $dl = Linker::linkKnown(
-                                       $wgUser->getTalkPage(),
-                                       wfMessage( 'newmessagesdifflink' )->escaped(),
-                                       array(),
-                                       array( 'diff' => 'cur' )
-                               );
-                               $s[] = '<strong>' . wfMessage( 'youhavenewmessages', $tl, $dl )->text() . '</strong>';
-                               # disable caching
-                               $wgOut->setSquidMaxage( 0 );
-                               $wgOut->enableClientCache( false );
-                       }
-               }
-
-               $undelete = $skin->getUndeleteLink();
-
-               if ( !empty( $undelete ) ) {
-                       $s[] = $undelete;
-               }
-
-               return $wgLang->pipeList( $s );
-       }
-
-       /**
-        * Gets the h1 element with the page title.
-        * @return string
-        */
-       function pageTitle() {
-               global $wgOut;
-               $s = '<h1 class="pagetitle"><span dir="auto">' . $wgOut->getPageTitle() . '</span></h1>';
-               return $s;
-       }
-
-       function pageSubtitle() {
-               global $wgOut;
-
-               $sub = $wgOut->getSubtitle();
-
-               if ( $sub == '' ) {
-                       global $wgExtraSubtitle;
-                       $sub = wfMessage( 'tagline' )->parse() . $wgExtraSubtitle;
-               }
-
-               $subpages = $this->getSkin()->subPageSubtitle();
-               $sub .= !empty( $subpages ) ? "</p><p class='subpages'>$subpages" : '';
-               $s = "<p class='subtitle'>{$sub}</p>\n";
-
-               return $s;
-       }
-
-       function printableLink() {
-               global $wgOut, $wgRequest, $wgLang;
-
-               $s = array();
-
-               if ( !$wgOut->isPrintable() ) {
-                       $printurl = htmlspecialchars( $this->getSkin()->getTitle()->getLocalURL(
-                               $wgRequest->appendQueryValue( 'printable', 'yes', true ) ) );
-                       $s[] = "<a href=\"$printurl\" rel=\"alternate\">"
-                               . wfMessage( 'printableversion' )->text() . '</a>';
-               }
-
-               if ( $wgOut->isSyndicated() ) {
-                       foreach ( $wgOut->getSyndicationLinks() as $format => $link ) {
-                               $feedurl = htmlspecialchars( $link );
-                               $s[] = "<a href=\"$feedurl\" rel=\"alternate\" type=\"application/{$format}+xml\""
-                                               . " class=\"feedlink\">" . wfMessage( "feed-$format" )->escaped() . "</a>";
-                       }
-               }
-               return $wgLang->pipeList( $s );
-       }
-
-       /**
-        * @deprecated in 1.19
-        * @return string
-        */
-       function getQuickbarCompensator( $rows = 1 ) {
-               wfDeprecated( __METHOD__, '1.19' );
-               return "<td style='width: 152px;' rowspan='{$rows}'>&#160;</td>";
-       }
-
-       function editThisPage() {
-               global $wgOut;
-
-               if ( !$wgOut->isArticleRelated() ) {
-                       $s = wfMessage( 'protectedpage' )->text();
-               } else {
-                       $title = $this->getSkin()->getTitle();
-                       if ( $title->quickUserCan( 'edit' ) && $title->exists() ) {
-                               $t = wfMessage( 'editthispage' )->text();
-                       } elseif ( $title->quickUserCan( 'create' ) && !$title->exists() ) {
-                               $t = wfMessage( 'create-this-page' )->text();
-                       } else {
-                               $t = wfMessage( 'viewsource' )->text();
-                       }
-
-                       $s = Linker::linkKnown(
-                               $title,
-                               $t,
-                               array(),
-                               $this->getSkin()->editUrlOptions()
-                       );
-               }
-
-               return $s;
-       }
-
-       function deleteThisPage() {
-               global $wgUser, $wgRequest;
-
-               $diff = $wgRequest->getVal( 'diff' );
-               $title = $this->getSkin()->getTitle();
-
-               if ( $title->getArticleID() && ( !$diff ) && $wgUser->isAllowed( 'delete' ) ) {
-                       $t = wfMessage( 'deletethispage' )->text();
-
-                       $s = Linker::linkKnown(
-                               $title,
-                               $t,
-                               array(),
-                               array( 'action' => 'delete' )
-                       );
-               } else {
-                       $s = '';
-               }
-
-               return $s;
-       }
-
-       function protectThisPage() {
-               global $wgUser, $wgRequest;
-
-               $diff = $wgRequest->getVal( 'diff' );
-               $title = $this->getSkin()->getTitle();
-
-               if ( $title->getArticleID() && ( ! $diff ) && $wgUser->isAllowed( 'protect' ) && $title->getRestrictionTypes() ) {
-                       if ( $title->isProtected() ) {
-                               $text = wfMessage( 'unprotectthispage' )->text();
-                               $query = array( 'action' => 'unprotect' );
-                       } else {
-                               $text = wfMessage( 'protectthispage' )->text();
-                               $query = array( 'action' => 'protect' );
-                       }
-
-                       $s = Linker::linkKnown(
-                               $title,
-                               $text,
-                               array(),
-                               $query
-                       );
-               } else {
-                       $s = '';
-               }
-
-               return $s;
-       }
-
-       function watchThisPage() {
-               global $wgOut, $wgUser;
-               ++$this->mWatchLinkNum;
-
-               // Cache
-               $title = $this->getSkin()->getTitle();
-
-               if ( $wgOut->isArticleRelated() ) {
-                       if ( $wgUser->isWatched( $title ) ) {
-                               $text = wfMessage( 'unwatchthispage' )->text();
-                               $query = array(
-                                       'action' => 'unwatch',
-                                       'token' => UnwatchAction::getUnwatchToken( $title, $wgUser ),
-                               );
-                               $id = 'mw-unwatch-link' . $this->mWatchLinkNum;
-                       } else {
-                               $text = wfMessage( 'watchthispage' )->text();
-                               $query = array(
-                                       'action' => 'watch',
-                                       'token' => WatchAction::getWatchToken( $title, $wgUser ),
-                               );
-                               $id = 'mw-watch-link' . $this->mWatchLinkNum;
-                       }
-
-                       $s = Linker::linkKnown(
-                               $title,
-                               $text,
-                               array( 'id' => $id ),
-                               $query
-                       );
-               } else {
-                       $s = wfMessage( 'notanarticle' )->text();
-               }
-
-               return $s;
-       }
-
-       function moveThisPage() {
-               if ( $this->getSkin()->getTitle()->quickUserCan( 'move' ) ) {
-                       return Linker::linkKnown(
-                               SpecialPage::getTitleFor( 'Movepage' ),
-                               wfMessage( 'movethispage' )->text(),
-                               array(),
-                               array( 'target' => $this->getSkin()->getTitle()->getPrefixedDBkey() )
-                       );
-               } else {
-                       // no message if page is protected - would be redundant
-                       return '';
-               }
-       }
-
-       function historyLink() {
-               return Linker::link(
-                       $this->getSkin()->getTitle(),
-                       wfMessage( 'history' )->escaped(),
-                       array( 'rel' => 'archives' ),
-                       array( 'action' => 'history' )
-               );
-       }
-
-       function whatLinksHere() {
-               return Linker::linkKnown(
-                       SpecialPage::getTitleFor( 'Whatlinkshere', $this->getSkin()->getTitle()->getPrefixedDBkey() ),
-                       wfMessage( 'whatlinkshere' )->escaped()
-               );
-       }
-
-       function userContribsLink() {
-               return Linker::linkKnown(
-                       SpecialPage::getTitleFor( 'Contributions', $this->getSkin()->getTitle()->getDBkey() ),
-                       wfMessage( 'contributions' )->escaped()
-               );
-       }
-
-       function emailUserLink() {
-               return Linker::linkKnown(
-                       SpecialPage::getTitleFor( 'Emailuser', $this->getSkin()->getTitle()->getDBkey() ),
-                       wfMessage( 'emailuser' )->escaped()
-               );
-       }
-
-       function watchPageLinksLink() {
-               global $wgOut;
-
-               if ( !$wgOut->isArticleRelated() ) {
-                       return wfMessage( 'parentheses', wfMessage( 'notanarticle' )->text() )->escaped();
-               } else {
-                       return Linker::linkKnown(
-                               SpecialPage::getTitleFor( 'Recentchangeslinked', $this->getSkin()->getTitle()->getPrefixedDBkey() ),
-                               wfMessage( 'recentchangeslinked-toolbox' )->escaped()
-                       );
-               }
-       }
-
-       function talkLink() {
-               $title = $this->getSkin()->getTitle();
-               if ( NS_SPECIAL == $title->getNamespace() ) {
-                       # No discussion links for special pages
-                       return '';
-               }
-
-               $linkOptions = array();
-
-               if ( $title->isTalkPage() ) {
-                       $link = $title->getSubjectPage();
-                       switch ( $link->getNamespace() ) {
-                               case NS_MAIN:
-                                       $text = wfMessage( 'articlepage' );
-                                       break;
-                               case NS_USER:
-                                       $text = wfMessage( 'userpage' );
-                                       break;
-                               case NS_PROJECT:
-                                       $text = wfMessage( 'projectpage' );
-                                       break;
-                               case NS_FILE:
-                                       $text = wfMessage( 'imagepage' );
-                                       # Make link known if image exists, even if the desc. page doesn't.
-                                       if ( wfFindFile( $link ) ) {
-                                               $linkOptions[] = 'known';
-                                       }
-                                       break;
-                               case NS_MEDIAWIKI:
-                                       $text = wfMessage( 'mediawikipage' );
-                                       break;
-                               case NS_TEMPLATE:
-                                       $text = wfMessage( 'templatepage' );
-                                       break;
-                               case NS_HELP:
-                                       $text = wfMessage( 'viewhelppage' );
-                                       break;
-                               case NS_CATEGORY:
-                                       $text = wfMessage( 'categorypage' );
-                                       break;
-                               default:
-                                       $text = wfMessage( 'articlepage' );
-                       }
-               } else {
-                       $link = $title->getTalkPage();
-                       $text = wfMessage( 'talkpage' );
-               }
-
-               $s = Linker::link( $link, $text->text(), array(), array(), $linkOptions );
-
-               return $s;
-       }
-
-       function commentLink() {
-               global $wgOut;
-
-               $title = $this->getSkin()->getTitle();
-               if ( $title->isSpecialPage() ) {
-                       return '';
-               }
-
-               # __NEWSECTIONLINK___ changes behavior here
-               # If it is present, the link points to this page, otherwise
-               # it points to the talk page
-               if ( !$title->isTalkPage() && !$wgOut->showNewSectionLink() ) {
-                       $title = $title->getTalkPage();
-               }
-
-               return Linker::linkKnown(
-                       $title,
-                       wfMessage( 'postcomment' )->text(),
-                       array(),
-                       array(
-                               'action' => 'edit',
-                               'section' => 'new'
-                       )
-               );
-       }
-
-       function getUploadLink() {
-               global $wgUploadNavigationUrl;
-
-               if ( $wgUploadNavigationUrl ) {
-                       # Using an empty class attribute to avoid automatic setting of "external" class
-                       return Linker::makeExternalLink( $wgUploadNavigationUrl,
-                               wfMessage( 'upload' )->escaped(),
-                               false, null, array( 'class' => '' ) );
-               } else {
-                       return Linker::linkKnown(
-                               SpecialPage::getTitleFor( 'Upload' ),
-                               wfMessage( 'upload' )->escaped()
-                       );
-               }
-       }
-
-       function nameAndLogin() {
-               global $wgUser, $wgLang, $wgRequest;
-
-               $returnTo = $this->getSkin()->getTitle();
-               $ret = '';
-
-               if ( $wgUser->isAnon() ) {
-                       if ( $this->getSkin()->showIPinHeader() ) {
-                               $name = $wgRequest->getIP();
-
-                               $talkLink = Linker::link( $wgUser->getTalkPage(),
-                                       $wgLang->getNsText( NS_TALK ) );
-                               $talkLink = wfMessage( 'parentheses' )->rawParams( $talkLink )->escaped();
-
-                               $ret .= "$name $talkLink";
-                       } else {
-                               $ret .= wfMessage( 'notloggedin' )->text();
-                       }
-
-                       $query = array();
-
-                       if ( !$returnTo->isSpecial( 'Userlogout' ) ) {
-                               $query['returnto'] = $returnTo->getPrefixedDBkey();
-                       }
-
-                       $loginlink = $wgUser->isAllowed( 'createaccount' )
-                               ? 'nav-login-createaccount'
-                               : 'login';
-                       $ret .= "\n<br />" . Linker::link(
-                               SpecialPage::getTitleFor( 'Userlogin' ),
-                               wfMessage( $loginlink )->text(), array(), $query
-                       );
-               } else {
-                       $talkLink = Linker::link( $wgUser->getTalkPage(),
-                               $wgLang->getNsText( NS_TALK ) );
-                       $talkLink = wfMessage( 'parentheses' )->rawParams( $talkLink )->escaped();
-
-                       $ret .= Linker::link( $wgUser->getUserPage(),
-                               htmlspecialchars( $wgUser->getName() ) );
-                       $ret .= " $talkLink<br />";
-                       $ret .= $wgLang->pipeList( array(
-                               Linker::link(
-                                       SpecialPage::getTitleFor( 'Userlogout' ), wfMessage( 'logout' )->text(),
-                                       array(), array( 'returnto' => $returnTo->getPrefixedDBkey() )
-                               ),
-                               Linker::specialLink( 'Preferences' ),
-                       ) );
-               }
-
-               $ret = $wgLang->pipeList( array(
-                       $ret,
-                       Linker::link(
-                               Title::newFromText( wfMessage( 'helppage' )->inContentLanguage()->text() ),
-                               wfMessage( 'help' )->text()
-                       ),
-               ) );
-
-               return $ret;
-       }
-}
index 5a525bf..d114b99 100644 (file)
@@ -1807,8 +1807,11 @@ class User {
        }
 
        /**
-        * Return the talk page(s) this user has new messages on.
-        * @return Array of String page URLs
+        * Return the revision and link for the oldest new talk page message for
+        * this user.
+        * Note: This function was designed to accomodate multiple talk pages, but
+        * currently only returns a single link and revision.
+        * @return Array
         */
        public function getNewMessageLinks() {
                $talks = array();
@@ -1828,6 +1831,28 @@ class User {
                return array( array( 'wiki' => wfWikiID(), 'link' => $utp->getLocalURL(), 'rev' => $rev ) );
        }
 
+       /**
+        * Get the revision ID for the oldest new talk page message for this user
+        * @return Integer or null if there are no new messages
+        */
+       public function getNewMessageRevisionId() {
+               $newMessageRevisionId = null;
+               $newMessageLinks = $this->getNewMessageLinks();
+               if ( $newMessageLinks ) {
+                       // Note: getNewMessageLinks() never returns more than a single link
+                       // and it is always for the same wiki, but we double-check here in
+                       // case that changes some time in the future.
+                       if ( count( $newMessageLinks ) === 1
+                               && $newMessageLinks[0]['wiki'] === wfWikiID()
+                               && $newMessageLinks[0]['rev']
+                       ) {
+                               $newMessageRevision = $newMessageLinks[0]['rev'];
+                               $newMessageRevisionId = $newMessageRevision->getId();
+                       }
+               }
+               return $newMessageRevisionId;
+       }
+
        /**
         * Internal uncached check for new messages
         *
index e85bf9c..20ee5e5 100644 (file)
@@ -347,7 +347,6 @@ class WebRequest {
                        $data = $this->normalizeUnicode( $data );
                        return $data;
                } else {
-                       taint( $default );
                        return $default;
                }
        }
index 3b7d701..bfa3c71 100644 (file)
@@ -91,21 +91,17 @@ if ( $IP === false ) {
        }
 }
 
-if ( isset( $_SERVER['MW_COMPILED'] ) ) {
-       define( 'MW_COMPILED', 1 );
-} else {
-       # Get MWInit class
-       require_once( "$IP/includes/Init.php" );
+# Get MWInit class
+require_once( "$IP/includes/Init.php" );
 
-       # Start the autoloader, so that extensions can derive classes from core files
-       require_once( "$IP/includes/AutoLoader.php" );
+# Start the autoloader, so that extensions can derive classes from core files
+require_once( "$IP/includes/AutoLoader.php" );
 
-       # Load the profiler
-       require_once( "$IP/includes/profiler/Profiler.php" );
+# Load the profiler
+require_once( "$IP/includes/profiler/Profiler.php" );
 
-       # Load up some global defines.
-       require_once( "$IP/includes/Defines.php" );
-}
+# Load up some global defines.
+require_once( "$IP/includes/Defines.php" );
 
 # Start the profiler
 $wgProfiler = array();
@@ -116,14 +112,14 @@ if ( file_exists( "$IP/StartProfiler.php" ) ) {
 wfProfileIn( 'WebStart.php-conf' );
 
 # Load default settings
-require_once( MWInit::compiledPath( "includes/DefaultSettings.php" ) );
+require_once( "$IP/includes/DefaultSettings.php" );
 
 if ( defined( 'MW_CONFIG_CALLBACK' ) ) {
        # Use a callback function to configure MediaWiki
        MWFunction::call( MW_CONFIG_CALLBACK );
 } else {
        if ( !defined( 'MW_CONFIG_FILE' ) ) {
-               define( 'MW_CONFIG_FILE', MWInit::interpretedPath( 'LocalSettings.php' ) );
+               define( 'MW_CONFIG_FILE', "$IP/LocalSettings.php" );
        }
 
        # LocalSettings.php is the per site customization file. If it does not exist
@@ -139,7 +135,7 @@ if ( defined( 'MW_CONFIG_CALLBACK' ) ) {
 }
 
 if ( $wgEnableSelenium ) {
-       require_once( MWInit::compiledPath( "includes/SeleniumWebSettings.php" ) );
+       require_once( "$IP/includes/SeleniumWebSettings.php" );
 }
 
 wfProfileOut( 'WebStart.php-conf' );
@@ -150,13 +146,11 @@ wfProfileIn( 'WebStart.php-ob_start' );
 # that would cause us to potentially mix gzip and non-gzip output, creating a
 # big mess.
 if ( !defined( 'MW_NO_OUTPUT_BUFFER' ) && ob_get_level() == 0 ) {
-       if ( !defined( 'MW_COMPILED' ) ) {
-               require_once( "$IP/includes/OutputHandler.php" );
-       }
+       require_once( "$IP/includes/OutputHandler.php" );
        ob_start( 'wfOutputHandler' );
 }
 wfProfileOut( 'WebStart.php-ob_start' );
 
 if ( !defined( 'MW_NO_SETUP' ) ) {
-       require_once( MWInit::compiledPath( "includes/Setup.php" ) );
+       require_once( "$IP/includes/Setup.php" );
 }
index 8c00e1b..f2c9c29 100644 (file)
@@ -2053,7 +2053,8 @@ class WikiPage implements Page, IDBAccessObject {
                $content = $revision->getContent();
 
                // Parse the text
-               // Be careful not to double-PST: $text is usually already PST-ed once
+               // Be careful not to do pre-save transform twice: $text is usually
+               // already pre-save transformed once.
                if ( !$this->mPreparedEdit || $this->mPreparedEdit->output->getFlag( 'vary-revision' ) ) {
                        wfDebug( __METHOD__ . ": No prepared edit or vary-revision is set...\n" );
                        $editInfo = $this->prepareContentForEdit( $content, $revision->getId(), $user );
index 6dbda5f..787057d 100644 (file)
@@ -56,7 +56,7 @@ class ApiQueryInfo extends ApiQueryBase {
         * @return void
         */
        public function requestExtraData( $pageSet ) {
-               global $wgDisableCounters;
+               global $wgDisableCounters, $wgContentHandlerUseDB;
 
                $pageSet->requestField( 'page_restrictions' );
                // when resolving redirects, no page will have this field
@@ -70,6 +70,9 @@ class ApiQueryInfo extends ApiQueryBase {
                $pageSet->requestField( 'page_touched' );
                $pageSet->requestField( 'page_latest' );
                $pageSet->requestField( 'page_len' );
+               if ( $wgContentHandlerUseDB ) {
+                       $pageSet->requestField( 'page_content_model' );
+               }
        }
 
        /**
@@ -348,6 +351,9 @@ class ApiQueryInfo extends ApiQueryBase {
                $titleExists = $pageid > 0; //$title->exists() needs pageid, which is not set for all title objects
                $ns = $title->getNamespace();
                $dbkey = $title->getDBkey();
+
+               $pageInfo['contentmodel'] = $title->getContentModel();
+
                if ( $titleExists ) {
                        global $wgDisableCounters;
 
@@ -819,7 +825,8 @@ class ApiQueryInfo extends ApiQueryBase {
                                'starttimestamp' => array(
                                        ApiBase::PROP_TYPE => 'timestamp',
                                        ApiBase::PROP_NULLABLE => true
-                               )
+                               ),
+                               'contentmodel' => 'string',
                        ),
                        'watched' => array(
                                'watched' => 'boolean'
index 2603b9f..819925c 100644 (file)
@@ -127,7 +127,7 @@ class CloneDatabase {
        /**
         * Change the table prefix on all open DB connections/
         *
-        * @param  $prefix
+        * @param $prefix
         * @return void
         */
        public static function changePrefix( $prefix ) {
@@ -137,8 +137,8 @@ class CloneDatabase {
        }
 
        /**
-        * @param  $lb LoadBalancer
-        * @param  $prefix
+        * @param $lb LoadBalancer
+        * @param $prefix
         * @return void
         */
        public static function changeLBPrefix( $lb, $prefix ) {
@@ -146,8 +146,8 @@ class CloneDatabase {
        }
 
        /**
-        * @param  $db DatabaseBase
-        * @param  $prefix
+        * @param $db DatabaseBase
+        * @param $prefix
         * @return void
         */
        public static function changeDBPrefix( $db, $prefix ) {
index 1cbffd8..85c459e 100644 (file)
  * @ingroup Database
  */
 
-/** Number of times to re-try an operation in case of deadlock */
-define( 'DEADLOCK_TRIES', 4 );
-/** Minimum time to wait before retry, in microseconds */
-define( 'DEADLOCK_DELAY_MIN', 500000 );
-/** Maximum time to wait before retry */
-define( 'DEADLOCK_DELAY_MAX', 1500000 );
-
 /**
  * Base interface for all DBMS-specific code. At a bare minimum, all of the
  * following must be implemented to support MediaWiki
@@ -165,7 +158,7 @@ interface DatabaseType {
         * @param string $fname Calling function name
         * @return Mixed: Database-specific index description class or false if the index does not exist
         */
-       function indexInfo( $table, $index, $fname = 'Database::indexInfo' );
+       function indexInfo( $table, $index, $fname = __METHOD__ );
 
        /**
         * Get the number of rows affected by the last write query
@@ -216,6 +209,12 @@ interface DatabaseType {
  * @ingroup Database
  */
 abstract class DatabaseBase implements DatabaseType {
+       /** Number of times to re-try an operation in case of deadlock */
+       const DEADLOCK_TRIES = 4;
+       /** Minimum time to wait before retry, in microseconds */
+       const DEADLOCK_DELAY_MIN = 500000;
+       /** Maximum time to wait before retry */
+       const DEADLOCK_DELAY_MAX = 1500000;
 
 # ------------------------------------------------------------------------------
 # Variables
@@ -871,7 +870,7 @@ abstract class DatabaseBase implements DatabaseType {
         * @return boolean|ResultWrapper. true for a successful write query, ResultWrapper object
         *     for a successful read query, or false on failure if $tempIgnore set
         */
-       public function query( $sql, $fname = '', $tempIgnore = false ) {
+       public function query( $sql, $fname = __METHOD__, $tempIgnore = false ) {
                $isMaster = !is_null( $this->getLBInfo( 'master' ) );
                if ( !Profiler::instance()->isStub() ) {
                        # generalizeSQL will probably cut down the query to reasonable
@@ -946,14 +945,6 @@ abstract class DatabaseBase implements DatabaseType {
                        wfDebug( "Query {$this->mDBname} ($cnt) ($master): $sqlx\n" );
                }
 
-               if ( istainted( $sql ) & TC_MYSQL ) {
-                       if ( !Profiler::instance()->isStub() ) {
-                               wfProfileOut( $queryProf );
-                               wfProfileOut( $totalProf );
-                       }
-                       throw new MWException( 'Tainted query found' );
-               }
-
                $queryId = MWDebug::query( $sql, $fname, $isMaster );
 
                # Do the query and handle errors
@@ -1148,7 +1139,7 @@ abstract class DatabaseBase implements DatabaseType {
         *
         * @return bool|mixed The value from the field, or false on failure.
         */
-       public function selectField( $table, $var, $cond = '', $fname = 'DatabaseBase::selectField',
+       public function selectField( $table, $var, $cond = '', $fname = __METHOD__,
                $options = array()
        ) {
                if ( !is_array( $options ) ) {
@@ -1439,7 +1430,7 @@ abstract class DatabaseBase implements DatabaseType {
         *   DBQueryError exception will be thrown, except if the "ignore errors"
         *   option was set, in which case false will be returned.
         */
-       public function select( $table, $vars, $conds = '', $fname = 'DatabaseBase::select',
+       public function select( $table, $vars, $conds = '', $fname = __METHOD__,
                $options = array(), $join_conds = array() ) {
                $sql = $this->selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
 
@@ -1462,7 +1453,7 @@ abstract class DatabaseBase implements DatabaseType {
         * @return string SQL query string.
         * @see DatabaseBase::select()
         */
-       public function selectSQLText( $table, $vars, $conds = '', $fname = 'DatabaseBase::select',
+       public function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__,
                $options = array(), $join_conds = array() )
        {
                if ( is_array( $vars ) ) {
@@ -1529,7 +1520,7 @@ abstract class DatabaseBase implements DatabaseType {
         *
         * @return object|bool
         */
-       public function selectRow( $table, $vars, $conds, $fname = 'DatabaseBase::selectRow',
+       public function selectRow( $table, $vars, $conds, $fname = __METHOD__,
                $options = array(), $join_conds = array() )
        {
                $options = (array)$options;
@@ -1570,7 +1561,7 @@ abstract class DatabaseBase implements DatabaseType {
         * @return Integer: row count
         */
        public function estimateRowCount( $table, $vars = '*', $conds = '',
-               $fname = 'DatabaseBase::estimateRowCount', $options = array() )
+               $fname = __METHOD__, $options = array() )
        {
                $rows = 0;
                $res = $this->select( $table, array( 'rowcount' => 'COUNT(*)' ), $conds, $fname, $options );
@@ -1619,7 +1610,7 @@ abstract class DatabaseBase implements DatabaseType {
         * @param string $fname calling function name (optional)
         * @return Boolean: whether $table has filed $field
         */
-       public function fieldExists( $table, $field, $fname = 'DatabaseBase::fieldExists' ) {
+       public function fieldExists( $table, $field, $fname = __METHOD__ ) {
                $info = $this->fieldInfo( $table, $field );
 
                return (bool)$info;
@@ -1636,7 +1627,7 @@ abstract class DatabaseBase implements DatabaseType {
         *
         * @return bool|null
         */
-       public function indexExists( $table, $index, $fname = 'DatabaseBase::indexExists' ) {
+       public function indexExists( $table, $index, $fname = __METHOD__ ) {
                if ( !$this->tableExists( $table ) ) {
                        return null;
                }
@@ -1741,7 +1732,7 @@ abstract class DatabaseBase implements DatabaseType {
         *
         * @return bool
         */
-       public function insert( $table, $a, $fname = 'DatabaseBase::insert', $options = array() ) {
+       public function insert( $table, $a, $fname = __METHOD__, $options = array() ) {
                # No rows to insert, easy just return now
                if ( !count( $a ) ) {
                        return true;
@@ -1840,7 +1831,7 @@ abstract class DatabaseBase implements DatabaseType {
         *                   - LOW_PRIORITY: MySQL-specific, see MySQL manual.
         * @return Boolean
         */
-       function update( $table, $values, $conds, $fname = 'DatabaseBase::update', $options = array() ) {
+       function update( $table, $values, $conds, $fname = __METHOD__, $options = array() ) {
                $table = $this->tableName( $table );
                $opts = $this->makeUpdateOptions( $options );
                $sql = "UPDATE $opts $table SET " . $this->makeList( $values, LIST_SET );
@@ -2457,7 +2448,7 @@ abstract class DatabaseBase implements DatabaseType {
         *    a field name or an array of field names
         * @param string $fname Calling function name (use __METHOD__) for logs/profiling
         */
-       public function replace( $table, $uniqueIndexes, $rows, $fname = 'DatabaseBase::replace' ) {
+       public function replace( $table, $uniqueIndexes, $rows, $fname = __METHOD__ ) {
                $quotedTable = $this->tableName( $table );
 
                if ( count( $rows ) == 0 ) {
@@ -2560,7 +2551,7 @@ abstract class DatabaseBase implements DatabaseType {
         * @throws DBUnexpectedError
         */
        public function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds,
-               $fname = 'DatabaseBase::deleteJoin' )
+               $fname = __METHOD__ )
        {
                if ( !$conds ) {
                        throw new DBUnexpectedError( $this,
@@ -2626,7 +2617,7 @@ abstract class DatabaseBase implements DatabaseType {
         * @throws DBUnexpectedError
         * @return bool|ResultWrapper
         */
-       public function delete( $table, $conds, $fname = 'DatabaseBase::delete' ) {
+       public function delete( $table, $conds, $fname = __METHOD__ ) {
                if ( !$conds ) {
                        throw new DBUnexpectedError( $this, 'DatabaseBase::delete() called with no conditions' );
                }
@@ -2668,7 +2659,7 @@ abstract class DatabaseBase implements DatabaseType {
         * @return ResultWrapper
         */
        public function insertSelect( $destTable, $srcTable, $varMap, $conds,
-               $fname = 'DatabaseBase::insertSelect',
+               $fname = __METHOD__,
                $insertOptions = array(), $selectOptions = array() )
        {
                $destTable = $this->tableName( $destTable );
@@ -2860,7 +2851,7 @@ abstract class DatabaseBase implements DatabaseType {
                $args = func_get_args();
                $function = array_shift( $args );
                $oldIgnore = $this->ignoreErrors( true );
-               $tries = DEADLOCK_TRIES;
+               $tries = self::DEADLOCK_TRIES;
 
                if ( is_array( $function ) ) {
                        $fname = $function[0];
@@ -2877,7 +2868,7 @@ abstract class DatabaseBase implements DatabaseType {
                        if ( $errno ) {
                                if ( $this->wasDeadlock() ) {
                                        # Retry
-                                       usleep( mt_rand( DEADLOCK_DELAY_MIN, DEADLOCK_DELAY_MAX ) );
+                                       usleep( mt_rand( self::DEADLOCK_DELAY_MIN, self::DEADLOCK_DELAY_MAX ) );
                                } else {
                                        $this->reportQueryError( $error, $errno, $sql, $fname );
                                }
@@ -3065,7 +3056,7 @@ abstract class DatabaseBase implements DatabaseType {
         *
         * @param $fname string
         */
-       final public function begin( $fname = 'DatabaseBase::begin' ) {
+       final public function begin( $fname = __METHOD__ ) {
                global $wgDebugDBTransactions;
 
                if ( $this->mTrxLevel ) { // implicit commit
@@ -3120,7 +3111,7 @@ abstract class DatabaseBase implements DatabaseType {
         *        This will silently break any ongoing explicit transaction. Only set the flush flag if you are sure
         *        that it is safe to ignore these warnings in your context.
         */
-       final public function commit( $fname = 'DatabaseBase::commit', $flush = '' ) {
+       final public function commit( $fname = __METHOD__, $flush = '' ) {
                if ( $flush != 'flush' ) {
                        if ( !$this->mTrxLevel ) {
                                wfWarn( "$fname: No transaction to commit, something got out of sync!" );
@@ -3161,7 +3152,7 @@ abstract class DatabaseBase implements DatabaseType {
         *
         * @param $fname string
         */
-       final public function rollback( $fname = 'DatabaseBase::rollback' ) {
+       final public function rollback( $fname = __METHOD__ ) {
                if ( !$this->mTrxLevel ) {
                        wfWarn( "$fname: No transaction to rollback, something got out of sync!" );
                }
@@ -3199,7 +3190,7 @@ abstract class DatabaseBase implements DatabaseType {
         * @return Boolean: true if operation was successful
         */
        public function duplicateTableStructure( $oldName, $newName, $temporary = false,
-               $fname = 'DatabaseBase::duplicateTableStructure'
+               $fname = __METHOD__
        ) {
                throw new MWException(
                        'DatabaseBase::duplicateTableStructure is not implemented in descendant class' );
@@ -3212,7 +3203,7 @@ abstract class DatabaseBase implements DatabaseType {
         * @param string $fname calling function name
         * @throws MWException
         */
-       function listTables( $prefix = null, $fname = 'DatabaseBase::listTables' ) {
+       function listTables( $prefix = null, $fname = __METHOD__ ) {
                throw new MWException( 'DatabaseBase::listTables is not implemented in descendant class' );
        }
 
@@ -3436,7 +3427,7 @@ abstract class DatabaseBase implements DatabaseType {
         * @return bool|string
         */
        public function sourceStream( $fp, $lineCallback = false, $resultCallback = false,
-               $fname = 'DatabaseBase::sourceStream', $inputCallback = false )
+               $fname = __METHOD__, $inputCallback = false )
        {
                $cmd = '';
 
@@ -3675,7 +3666,7 @@ abstract class DatabaseBase implements DatabaseType {
         * @return bool|ResultWrapper
         * @since 1.18
         */
-       public function dropTable( $tableName, $fName = 'DatabaseBase::dropTable' ) {
+       public function dropTable( $tableName, $fName = __METHOD__ ) {
                if ( !$this->tableExists( $tableName, $fName ) ) {
                        return false;
                }
index da719be..293557f 100644 (file)
@@ -297,7 +297,7 @@ class DatabaseMssql extends DatabaseBase {
         *                                                 (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
         * @return Mixed: database result resource (feed to Database::fetchObject or whatever), or false on failure
         */
-       function select( $table, $vars, $conds = '', $fname = 'DatabaseMssql::select', $options = array(), $join_conds = array() )
+       function select( $table, $vars, $conds = '', $fname = __METHOD__, $options = array(), $join_conds = array() )
        {
                $sql = $this->selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
                if ( isset( $options['EXPLAIN'] ) ) {
@@ -322,7 +322,7 @@ class DatabaseMssql extends DatabaseBase {
         *                    (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
         * @return string, the SQL text
         */
-       function selectSQLText( $table, $vars, $conds = '', $fname = 'DatabaseMssql::select', $options = array(), $join_conds = array() ) {
+       function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__, $options = array(), $join_conds = array() ) {
                if ( isset( $options['EXPLAIN'] ) ) {
                        unset( $options['EXPLAIN'] );
                }
@@ -337,7 +337,7 @@ class DatabaseMssql extends DatabaseBase {
         * Takes same arguments as Database::select()
         * @return int
         */
-       function estimateRowCount( $table, $vars = '*', $conds = '', $fname = 'DatabaseMssql::estimateRowCount', $options = array() ) {
+       function estimateRowCount( $table, $vars = '*', $conds = '', $fname = __METHOD__, $options = array() ) {
                $options['EXPLAIN'] = true;// http://msdn2.microsoft.com/en-us/library/aa259203.aspx
                $res = $this->select( $table, $vars, $conds, $fname, $options );
 
@@ -356,7 +356,7 @@ class DatabaseMssql extends DatabaseBase {
         * If errors are explicitly ignored, returns NULL on failure
         * @return array|bool|null
         */
-       function indexInfo( $table, $index, $fname = 'DatabaseMssql::indexExists' ) {
+       function indexInfo( $table, $index, $fname = __METHOD__ ) {
                # This does not return the same info as MYSQL would, but that's OK because MediaWiki never uses the
                # returned value except to check for the existance of indexes.
                $sql = "sp_helpindex '" . $table . "'";
@@ -401,7 +401,7 @@ class DatabaseMssql extends DatabaseBase {
         * @throws DBQueryError
         * @return bool
         */
-       function insert( $table, $arrToInsert, $fname = 'DatabaseMssql::insert', $options = array() ) {
+       function insert( $table, $arrToInsert, $fname = __METHOD__, $options = array() ) {
                # No rows to insert, easy just return now
                if ( !count( $arrToInsert ) ) {
                        return true;
@@ -539,7 +539,7 @@ class DatabaseMssql extends DatabaseBase {
         * @throws DBQueryError
         * @return null|ResultWrapper
         */
-       function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = 'DatabaseMssql::insertSelect',
+       function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
                $insertOptions = array(), $selectOptions = array() ) {
                $ret = parent::insertSelect( $destTable, $srcTable, $varMap, $conds, $fname, $insertOptions, $selectOptions );
 
@@ -688,7 +688,7 @@ class DatabaseMssql extends DatabaseBase {
         * Query whether a given column exists in the mediawiki schema
         * @return bool
         */
-       function fieldExists( $table, $field, $fname = 'DatabaseMssql::fieldExists' ) {
+       function fieldExists( $table, $field, $fname = __METHOD__ ) {
                $table = $this->tableName( $table );
                $res = sqlsrv_query( $this->mConn, "SELECT DATA_TYPE FROM INFORMATION_SCHEMA.Columns
                        WHERE TABLE_NAME = '$table' AND COLUMN_NAME = '$field'" );
@@ -721,7 +721,7 @@ class DatabaseMssql extends DatabaseBase {
        /**
         * Begin a transaction, committing any previously open transaction
         */
-       protected function doBegin( $fname = 'DatabaseMssql::begin' ) {
+       protected function doBegin( $fname = __METHOD__ ) {
                sqlsrv_begin_transaction( $this->mConn );
                $this->mTrxLevel = 1;
        }
@@ -729,7 +729,7 @@ class DatabaseMssql extends DatabaseBase {
        /**
         * End a transaction
         */
-       protected function doCommit( $fname = 'DatabaseMssql::commit' ) {
+       protected function doCommit( $fname = __METHOD__ ) {
                sqlsrv_commit( $this->mConn );
                $this->mTrxLevel = 0;
        }
@@ -738,7 +738,7 @@ class DatabaseMssql extends DatabaseBase {
         * Rollback a transaction.
         * No-op on non-transactional databases.
         */
-       protected function doRollback( $fname = 'DatabaseMssql::rollback' ) {
+       protected function doRollback( $fname = __METHOD__ ) {
                sqlsrv_rollback( $this->mConn );
                $this->mTrxLevel = 0;
        }
index 4105ee1..d8a3723 100644 (file)
@@ -348,7 +348,7 @@ class DatabaseMysql extends DatabaseBase {
         * @param $fname string
         * @return ResultWrapper
         */
-       function replace( $table, $uniqueIndexes, $rows, $fname = 'DatabaseMysql::replace' ) {
+       function replace( $table, $uniqueIndexes, $rows, $fname = __METHOD__ ) {
                return $this->nativeReplace( $table, $rows, $fname );
        }
 
@@ -364,7 +364,7 @@ class DatabaseMysql extends DatabaseBase {
         * @param $options string|array
         * @return int
         */
-       public function estimateRowCount( $table, $vars = '*', $conds = '', $fname = 'DatabaseMysql::estimateRowCount', $options = array() ) {
+       public function estimateRowCount( $table, $vars = '*', $conds = '', $fname = __METHOD__, $options = array() ) {
                $options['EXPLAIN'] = true;
                $res = $this->select( $table, $vars, $conds, $fname, $options );
                if ( $res === false ) {
@@ -411,7 +411,7 @@ class DatabaseMysql extends DatabaseBase {
         * @param $fname string
         * @return bool|array|null False or null on failure
         */
-       function indexInfo( $table, $index, $fname = 'DatabaseMysql::indexInfo' ) {
+       function indexInfo( $table, $index, $fname = __METHOD__ ) {
                # SHOW INDEX works in MySQL 3.23.58, but SHOW INDEXES does not.
                # SHOW INDEX should work for 3.x and up:
                # http://dev.mysql.com/doc/mysql/en/SHOW_INDEX.html
@@ -577,12 +577,12 @@ class DatabaseMysql extends DatabaseBase {
         * @return bool|string
         */
        function masterPosWait( DBMasterPos $pos, $timeout ) {
-               $fname = 'DatabaseBase::masterPosWait';
+               $fname = __METHOD__;
                wfProfileIn( $fname );
 
                # Commit any open transactions
                if ( $this->mTrxLevel ) {
-                       $this->commit( __METHOD__ );
+                       $this->commit( $fname );
                }
 
                if ( !is_null( $this->mFakeSlaveLag ) ) {
@@ -815,7 +815,7 @@ class DatabaseMysql extends DatabaseBase {
         * @throws DBUnexpectedError
         * @return bool|ResultWrapper
         */
-       function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds, $fname = 'DatabaseBase::deleteJoin' ) {
+       function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds, $fname = __METHOD__ ) {
                if ( !$conds ) {
                        throw new DBUnexpectedError( $this, 'DatabaseBase::deleteJoin() called with empty $conds' );
                }
@@ -885,7 +885,7 @@ class DatabaseMysql extends DatabaseBase {
         * @param $temporary bool
         * @param $fname string
         */
-       function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = 'DatabaseMysql::duplicateTableStructure' ) {
+       function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = __METHOD__ ) {
                $tmp = $temporary ? 'TEMPORARY ' : '';
                $newName = $this->addIdentifierQuotes( $newName );
                $oldName = $this->addIdentifierQuotes( $oldName );
@@ -900,7 +900,7 @@ class DatabaseMysql extends DatabaseBase {
         * @param string $fname calling function name
         * @return array
         */
-       function listTables( $prefix = null, $fname = 'DatabaseMysql::listTables' ) {
+       function listTables( $prefix = null, $fname = __METHOD__ ) {
                $result = $this->query( "SHOW TABLES", $fname );
 
                $endArray = array();
@@ -922,7 +922,7 @@ class DatabaseMysql extends DatabaseBase {
         * @param $fName string
         * @return bool|ResultWrapper
         */
-       public function dropTable( $tableName, $fName = 'DatabaseMysql::dropTable' ) {
+       public function dropTable( $tableName, $fName = __METHOD__ ) {
                if ( !$this->tableExists( $tableName, $fName ) ) {
                        return false;
                }
index 34305f7..c197d91 100644 (file)
@@ -456,15 +456,15 @@ class DatabaseOracle extends DatabaseBase {
         * If errors are explicitly ignored, returns NULL on failure
         * @return bool
         */
-       function indexInfo( $table, $index, $fname = 'DatabaseOracle::indexExists' ) {
+       function indexInfo( $table, $index, $fname = __METHOD__ ) {
                return false;
        }
 
-       function indexUnique( $table, $index, $fname = 'DatabaseOracle::indexUnique' ) {
+       function indexUnique( $table, $index, $fname = __METHOD__ ) {
                return false;
        }
 
-       function insert( $table, $a, $fname = 'DatabaseOracle::insert', $options = array() ) {
+       function insert( $table, $a, $fname = __METHOD__, $options = array() ) {
                if ( !count( $a ) ) {
                        return true;
                }
@@ -624,7 +624,7 @@ class DatabaseOracle extends DatabaseBase {
                oci_free_statement( $stmt );
        }
 
-       function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = 'DatabaseOracle::insertSelect',
+       function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
                $insertOptions = array(), $selectOptions = array() )
        {
                $destTable = $this->tableName( $destTable );
@@ -763,7 +763,7 @@ class DatabaseOracle extends DatabaseBase {
                return $this->lastErrno() == 'OCI-00060';
        }
 
-       function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = 'DatabaseOracle::duplicateTableStructure' ) {
+       function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = __METHOD__ ) {
                $temporary = $temporary ? 'TRUE' : 'FALSE';
 
                $newName = strtoupper( $newName );
@@ -776,7 +776,7 @@ class DatabaseOracle extends DatabaseBase {
                return $this->doQuery( "BEGIN DUPLICATE_TABLE( '$tabName', '$oldPrefix', '$newPrefix', $temporary ); END;" );
        }
 
-       function listTables( $prefix = null, $fname = 'DatabaseOracle::listTables' ) {
+       function listTables( $prefix = null, $fname = __METHOD__ ) {
                $listWhere = '';
                if ( !empty( $prefix ) ) {
                        $listWhere = ' AND table_name LIKE \'' . strtoupper( $prefix ) . '%\'';
@@ -800,7 +800,7 @@ class DatabaseOracle extends DatabaseBase {
                return $endArray;
        }
 
-       public function dropTable( $tableName, $fName = 'DatabaseOracle::dropTable' ) {
+       public function dropTable( $tableName, $fName = __METHOD__ ) {
                $tableName = $this->tableName( $tableName );
                if ( !$this->tableExists( $tableName ) ) {
                        return false;
@@ -857,7 +857,7 @@ class DatabaseOracle extends DatabaseBase {
         * Query whether a given index exists
         * @return bool
         */
-       function indexExists( $table, $index, $fname = 'DatabaseOracle::indexExists' ) {
+       function indexExists( $table, $index, $fname = __METHOD__ ) {
                $table = $this->tableName( $table );
                $table = strtoupper( $this->removeIdentifierQuotes( $table ) );
                $index = strtoupper( $index );
@@ -961,12 +961,12 @@ class DatabaseOracle extends DatabaseBase {
                return $this->fieldInfoMulti( $table, $field );
        }
 
-       protected function doBegin( $fname = 'DatabaseOracle::begin' ) {
+       protected function doBegin( $fname = __METHOD__ ) {
                $this->mTrxLevel = 1;
                $this->doQuery( 'SET CONSTRAINTS ALL DEFERRED' );
        }
 
-       protected function doCommit( $fname = 'DatabaseOracle::commit' ) {
+       protected function doCommit( $fname = __METHOD__ ) {
                if ( $this->mTrxLevel ) {
                        $ret = oci_commit( $this->mConn );
                        if ( !$ret ) {
@@ -977,7 +977,7 @@ class DatabaseOracle extends DatabaseBase {
                }
        }
 
-       protected function doRollback( $fname = 'DatabaseOracle::rollback' ) {
+       protected function doRollback( $fname = __METHOD__ ) {
                if ( $this->mTrxLevel ) {
                        oci_rollback( $this->mConn );
                        $this->mTrxLevel = 0;
@@ -987,7 +987,7 @@ class DatabaseOracle extends DatabaseBase {
 
        /* defines must comply with ^define\s*([^\s=]*)\s*=\s?'\{\$([^\}]*)\}'; */
        function sourceStream( $fp, $lineCallback = false, $resultCallback = false,
-               $fname = 'DatabaseOracle::sourceStream', $inputCallback = false ) {
+               $fname = __METHOD__, $inputCallback = false ) {
                $cmd = '';
                $done = false;
                $dollarquote = false;
@@ -1139,7 +1139,7 @@ class DatabaseOracle extends DatabaseBase {
                return $conds2;
        }
 
-       function selectRow( $table, $vars, $conds, $fname = 'DatabaseOracle::selectRow', $options = array(), $join_conds = array() ) {
+       function selectRow( $table, $vars, $conds, $fname = __METHOD__, $options = array(), $join_conds = array() ) {
                if ( is_array( $conds ) ) {
                        $conds = $this->wrapConditionsForWhere( $table, $conds );
                }
@@ -1188,7 +1188,7 @@ class DatabaseOracle extends DatabaseBase {
                return array( $startOpts, $useIndex, $preLimitTail, $postLimitTail );
        }
 
-       public function delete( $table, $conds, $fname = 'DatabaseOracle::delete' ) {
+       public function delete( $table, $conds, $fname = __METHOD__ ) {
                if ( is_array( $conds ) ) {
                        $conds = $this->wrapConditionsForWhere( $table, $conds );
                }
@@ -1211,7 +1211,7 @@ class DatabaseOracle extends DatabaseBase {
                return parent::delete( $table, $conds, $fname );
        }
 
-       function update( $table, $values, $conds, $fname = 'DatabaseOracle::update', $options = array() ) {
+       function update( $table, $values, $conds, $fname = __METHOD__, $options = array() ) {
                global $wgContLang;
 
                $table = $this->tableName( $table );
index e12175f..b5ac5cb 100644 (file)
@@ -482,7 +482,7 @@ class DatabasePostgres extends DatabaseBase {
                parent::reportQueryError( $error, $errno, $sql, $fname, false );
        }
 
-       function queryIgnore( $sql, $fname = 'DatabasePostgres::queryIgnore' ) {
+       function queryIgnore( $sql, $fname = __METHOD__ ) {
                return $this->query( $sql, $fname, true );
        }
 
@@ -610,7 +610,7 @@ class DatabasePostgres extends DatabaseBase {
         * Takes same arguments as Database::select()
         * @return int
         */
-       function estimateRowCount( $table, $vars = '*', $conds = '', $fname = 'DatabasePostgres::estimateRowCount', $options = array() ) {
+       function estimateRowCount( $table, $vars = '*', $conds = '', $fname = __METHOD__, $options = array() ) {
                $options['EXPLAIN'] = true;
                $res = $this->select( $table, $vars, $conds, $fname, $options );
                $rows = -1;
@@ -629,7 +629,7 @@ class DatabasePostgres extends DatabaseBase {
         * If errors are explicitly ignored, returns NULL on failure
         * @return bool|null
         */
-       function indexInfo( $table, $index, $fname = 'DatabasePostgres::indexInfo' ) {
+       function indexInfo( $table, $index, $fname = __METHOD__ ) {
                $sql = "SELECT indexname FROM pg_indexes WHERE tablename='$table'";
                $res = $this->query( $sql, $fname );
                if ( !$res ) {
@@ -705,7 +705,7 @@ __INDEXATTR__;
                return $a;
        }
 
-       function indexUnique( $table, $index, $fname = 'DatabasePostgres::indexUnique' ) {
+       function indexUnique( $table, $index, $fname = __METHOD__ ) {
                $sql = "SELECT indexname FROM pg_indexes WHERE tablename='{$table}'" .
                        " AND indexdef LIKE 'CREATE UNIQUE%(" .
                        $this->strencode( $this->indexName( $index ) ) .
@@ -733,7 +733,7 @@ __INDEXATTR__;
         *
         * @return bool Success of insert operation. IGNORE always returns true.
         */
-       function insert( $table, $args, $fname = 'DatabasePostgres::insert', $options = array() ) {
+       function insert( $table, $args, $fname = __METHOD__, $options = array() ) {
                if ( !count( $args ) ) {
                        return true;
                }
@@ -850,7 +850,7 @@ __INDEXATTR__;
         * @todo FIXME: Implement this a little better (seperate select/insert)?
         * @return bool
         */
-       function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = 'DatabasePostgres::insertSelect',
+       function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
                $insertOptions = array(), $selectOptions = array() )
        {
                $destTable = $this->tableName( $destTable );
@@ -979,13 +979,13 @@ __INDEXATTR__;
                return $this->lastErrno() == '40P01';
        }
 
-       function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = 'DatabasePostgres::duplicateTableStructure' ) {
+       function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = __METHOD__ ) {
                $newName = $this->addIdentifierQuotes( $newName );
                $oldName = $this->addIdentifierQuotes( $oldName );
                return $this->query( 'CREATE ' . ( $temporary ? 'TEMPORARY ' : '' ) . " TABLE $newName (LIKE $oldName INCLUDING DEFAULTS)", $fname );
        }
 
-       function listTables( $prefix = null, $fname = 'DatabasePostgres::listTables' ) {
+       function listTables( $prefix = null, $fname = __METHOD__ ) {
                $eschema = $this->addQuotes( $this->getCoreSchema() );
                $result = $this->query( "SELECT tablename FROM pg_tables WHERE schemaname = $eschema", $fname );
                $endArray = array();
index 80341b0..53a4dcf 100644 (file)
@@ -200,7 +200,7 @@ class DatabaseSqlite extends DatabaseBase {
         *
         * @return ResultWrapper
         */
-       function attachDatabase( $name, $file = false, $fname = 'DatabaseSqlite::attachDatabase' ) {
+       function attachDatabase( $name, $file = false, $fname = __METHOD__ ) {
                global $wgSQLiteDataDir;
                if ( !$file ) {
                        $file = self::generateFileName( $wgSQLiteDataDir, $name );
@@ -420,7 +420,7 @@ class DatabaseSqlite extends DatabaseBase {
         *
         * @return array
         */
-       function indexInfo( $table, $index, $fname = 'DatabaseSqlite::indexExists' ) {
+       function indexInfo( $table, $index, $fname = __METHOD__ ) {
                $sql = 'PRAGMA index_info(' . $this->addQuotes( $this->indexName( $index ) ) . ')';
                $res = $this->query( $sql, $fname );
                if ( !$res ) {
@@ -442,7 +442,7 @@ class DatabaseSqlite extends DatabaseBase {
         * @param $fname string
         * @return bool|null
         */
-       function indexUnique( $table, $index, $fname = 'DatabaseSqlite::indexUnique' ) {
+       function indexUnique( $table, $index, $fname = __METHOD__ ) {
                $row = $this->selectRow( 'sqlite_master', '*',
                        array(
                                'type' => 'index',
@@ -514,7 +514,7 @@ class DatabaseSqlite extends DatabaseBase {
         * Based on generic method (parent) with some prior SQLite-sepcific adjustments
         * @return bool
         */
-       function insert( $table, $a, $fname = 'DatabaseSqlite::insert', $options = array() ) {
+       function insert( $table, $a, $fname = __METHOD__, $options = array() ) {
                if ( !count( $a ) ) {
                        return true;
                }
@@ -541,7 +541,7 @@ class DatabaseSqlite extends DatabaseBase {
         * @param $fname string
         * @return bool|ResultWrapper
         */
-       function replace( $table, $uniqueIndexes, $rows, $fname = 'DatabaseSqlite::replace' ) {
+       function replace( $table, $uniqueIndexes, $rows, $fname = __METHOD__ ) {
                if ( !count( $rows ) ) {
                        return true;
                }
@@ -815,7 +815,7 @@ class DatabaseSqlite extends DatabaseBase {
         * @param $fname string
         * @return bool|ResultWrapper
         */
-       function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = 'DatabaseSqlite::duplicateTableStructure' ) {
+       function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = __METHOD__ ) {
                $res = $this->query( "SELECT sql FROM sqlite_master WHERE tbl_name=" . $this->addQuotes( $oldName ) . " AND type='table'", $fname );
                $obj = $this->fetchObject( $res );
                if ( !$obj ) {
@@ -841,7 +841,7 @@ class DatabaseSqlite extends DatabaseBase {
         *
         * @return array
         */
-       function listTables( $prefix = null, $fname = 'DatabaseSqlite::listTables' ) {
+       function listTables( $prefix = null, $fname = __METHOD__ ) {
                $result = $this->select(
                        'sqlite_master',
                        'name',
index 4ca193d..f5119d5 100644 (file)
@@ -60,7 +60,7 @@ class ExternalStore {
 
                $class = 'ExternalStore' . ucfirst( $proto );
                // Any custom modules should be added to $wgAutoLoadClasses for on-demand loading
-               return MWInit::classExists( $class ) ? new $class( $params ) : false;
+               return class_exists( $class ) ? new $class( $params ) : false;
        }
 
        /**
index ea379bc..e50355c 100644 (file)
@@ -699,6 +699,8 @@ abstract class FileBackendStore extends FileBackend {
                        }
                } elseif ( $stat === false ) { // file does not exist
                        $this->cheapCache->set( $path, 'stat', $latest ? 'NOT_EXIST_LATEST' : 'NOT_EXIST' );
+                       $this->cheapCache->set( $path, 'sha1', // the SHA-1 must be false too
+                               array( 'hash' => false, 'latest' => $latest ) );
                        wfDebug( __METHOD__ . ": File $path does not exist.\n" );
                } else { // an error occurred
                        wfDebug( __METHOD__ . ": Could not stat file $path.\n" );
index f0b289e..1527cfe 100644 (file)
@@ -104,7 +104,7 @@ class SwiftFileBackend extends FileBackendStore {
         */
        public function __construct( array $config ) {
                parent::__construct( $config );
-               if ( !MWInit::classExists( 'CF_Constants' ) ) {
+               if ( !class_exists( 'CF_Constants' ) ) {
                        throw new MWException( 'SwiftCloudFiles extension not installed.' );
                }
                // Required settings
index aa41135..b82a0b8 100644 (file)
@@ -1564,7 +1564,7 @@ class FileRepo {
        public function newFatal( $message /*, parameters...*/ ) {
                $params = func_get_args();
                array_unshift( $params, $this );
-               return MWInit::callStaticMethod( 'FileRepoStatus', 'newFatal', $params );
+               return call_user_func_array( array( 'FileRepoStatus', 'newFatal' ), $params );
        }
 
        /**
index beb6a58..385ae1a 100644 (file)
@@ -10065,12 +10065,10 @@ Anche se può essere possibile creare utenti senza password, questo non è sicur
 Da cambiare solamente se si è sicuri di averne bisogno.',
        'config-pg-test-error' => "Impossibile connettersi al database '''$1''': $2",
        'config-sqlite-dir' => 'Directory data di SQLite:',
-       'config-type-ibm_db2' => 'IBM DB2',
        'config-header-mysql' => 'Impostazioni MySQL',
        'config-header-postgres' => 'Impostazioni PostgreSQL',
        'config-header-sqlite' => 'Impostazioni SQLite',
        'config-header-oracle' => 'Impostazioni Oracle',
-       'config-header-ibm_db2' => 'Impostazioni IBM DB2',
        'config-invalid-db-type' => 'Tipo di database non valido',
        'config-missing-db-name' => 'È necessario immettere un valore per "Nome del database"',
        'config-db-web-account' => "Account del database per l'accesso web",
@@ -10081,7 +10079,6 @@ Da cambiare solamente se si è sicuri di averne bisogno.',
        'config-mysql-charset' => 'Set di caratteri del database:',
        'config-mysql-binary' => 'Binario',
        'config-mysql-utf8' => 'UTF-8',
-       'config-ibm_db2-low-db-pagesize' => "Il database DB2 in uso ha una tablespace predefinita con un insufficiente pagesize, che dovrebbe essere '''32K''' o maggiore.",
        'config-ns-generic' => 'Progetto',
        'config-ns-site-name' => 'Stesso nome wiki: $1',
        'config-ns-other-default' => 'MyWiki',
@@ -10106,7 +10103,7 @@ Inserire un indirizzo email se si desidera effettuare l'iscrizione alla mailing
        'config-almost-done' => 'Hai quasi finito!
 Adesso puoi saltare la rimanente parte della configurazione e semplicemente installare la wiki.',
        'config-optional-continue' => 'Fammi altre domande.',
-       'config-profile-wiki' => 'Wiki tradizionale', # Fuzzy
+       'config-profile-wiki' => 'Wiki aperto',
        'config-profile-no-anon' => 'Creazione utenza obbligatoria',
        'config-profile-fishbowl' => 'Solo editori autorizzati',
        'config-profile-private' => 'Wiki privata',
@@ -15928,18 +15925,18 @@ A peul adess sauté la configurassion rimanenta e instalé dlongh la wiki.",
        'config-optional-continue' => "Ciameme d'àutre chestion.",
        'config-optional-skip' => 'I son già anojà, instala mach la wiki.',
        'config-profile' => "Profil dij drit d'utent:",
-       'config-profile-wiki' => 'Deurb wiki',
+       'config-profile-wiki' => 'Wiki duverta',
        'config-profile-no-anon' => 'A venta creé un cont',
        'config-profile-fishbowl' => 'Mach editor autorisà',
        'config-profile-private' => 'Wiki privà',
        'config-profile-help' => "Le wiki a marcio mej quand ch'a lassa che pì përsone possìbij a-j modìfico.
-An MediaWiki, a l'é bel fé revisioné ij cambi recent, e buté andré minca dann che a sia fàit da utent noviss o malissios.
+An MediaWiki, a l'é bel fé revisioné j'ùltime modìfiche, e buté andré qualsëssìa dann che a sia fàit da dj'utent noviss o malissios.
 
 An tùit ij cas, an tanti a l'han trovà che MediaWiki a sia ùtil ant na gran varietà ëd manere, e dle vire a l'é pa bel fé convince cheidun dij vantagi dla wiki.
 Parèj a l'ha doe possibilità.
 
 Ël model '''{{int:config-profile-wiki}}''' a përmët a chicassìa ëd modifiché, bele sensa intré ant ël sistema.
-Na wiki con  '''{{int:config-profile-no-anon}}''' a dà pì 'd contròl, ma a peul slontané dij contribudor casuaj.
+Na wiki con  '''{{int:config-profile-no-anon}}''' a dà pì 'd contròl, ma a peul slontané dij contributor ocasionaj.
 
 Ël senari '''{{int:config-profile-fishbowl}}''' a përmët a j'utent aprovà ëd modifiché, ma ël pùblich a peul vëdde le pàgine, comprèisa la stòria.
 Un '''{{int:config-profile-private}}''' a përmët mach a j'utent aprovà ëd vëdde le pàgine, con la midema partìa ch'a peul modifiché.
@@ -15994,7 +15991,7 @@ Idealment, sòn a dovrìa pa esse acessìbil an sl'aragnà.",
        'config-logo-help' => "La pel dë stàndard ëd MediaWiki a comprend lë spassi për na marca ëd 135x160 pontin dzora la lista dla bara lateral.
 Ch'a dëscaria na figura ëd la dimension aproprià, e ch'a anserissa l'anliura ambelessì.
 
-S'a veul gnun-e marche, ch'a lassa ës camp bianch.",
+S'a veul gnun-e marche, ch'a lassa ës camp bianch.", # Fuzzy
        'config-instantcommons' => 'Abìlita Instant Commons',
        'config-instantcommons-help' => "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] a l'é na funsion ch'a përmët a le wiki ëd dovré dle figure, dij son e d'àutri mojen trovà an sël sit [//commons.wikimedia.org/ Wikimedia Commons].
 Për dovré sossì, MediaWiki a l'ha da manca dl'acess a la ragnà.
@@ -16027,8 +16024,8 @@ S'a conòsse nen la pòrta, cola predefinìa a l'é 11211.",
 A peulo avèj da manca ëd configurassion adissionaj, ma a peul abiliteje adess",
        'config-install-alreadydone' => "'''Avis''' A smija ch'a l'abie già instalà MediaWiki e ch'a preuva a instalelo torna.
 Për piasì, ch'a vada a la pàgina ch'a-i ven.",
-       'config-install-begin' => 'An sgnacand "{{int:config-continue}}", a anandiërà l\'istalassion ëd MediaWiki.
-S\'a veul anco\' fé dle modìfiche, ch\'a sgnaca su "{{int:config-back}}".',
+       'config-install-begin' => "An sgnacand su «{{int:config-continue}}», a anandiërà l'istalassion ëd MediaWiki.
+S'a veul anco' fé dle modìfiche, ch'a sgnaca su «{{int:config-back}}».",
        'config-install-step-done' => 'fàit',
        'config-install-step-failed' => 'falì',
        'config-install-extensions' => "Comprende j'estension",
index e35719d..084f198 100644 (file)
@@ -1003,7 +1003,7 @@ abstract class Installer {
                        return true;
                }
 
-               $lines = wfArrayMap( 'trim', explode( "\n", $lines ) );
+               $lines = array_map( 'trim', explode( "\n", $lines ) );
                $candidatesByLocale = array();
                $candidatesByLang = array();
 
index 6bf6f82..08d4f39 100644 (file)
@@ -96,7 +96,7 @@ abstract class JobQueue {
         */
        final public static function factory( array $params ) {
                $class = $params['class'];
-               if ( !MWInit::classExists( $class ) ) {
+               if ( !class_exists( $class ) ) {
                        throw new MWException( "Invalid job queue class '$class'." );
                }
                $obj = new $class( $params );
diff --git a/includes/parser/CoreLinkFunctions.php b/includes/parser/CoreLinkFunctions.php
deleted file mode 100644 (file)
index 1cabf76..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-<?php
-/**
- * Link functions provided by MediaWiki core; experimental
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Parser
- */
-
-/**
- * Various core link functions, registered in Parser::firstCallInit()
- * @ingroup Parser
- */
-class CoreLinkFunctions {
-       /**
-        * @param $parser Parser_LinkHooks
-        * @return bool
-        */
-       static function register( $parser ) {
-               $parser->setLinkHook( NS_CATEGORY, array( __CLASS__, 'categoryLinkHook' ) );
-               return true;
-       }
-
-       /**
-        * @param $parser Parser
-        * @param $holders LinkHolderArray
-        * @param $markers LinkMarkerReplacer
-        * @param Title $title
-        * @param $titleText
-        * @param null $displayText
-        * @param bool $leadingColon
-        * @return bool
-        */
-       static function defaultLinkHook( $parser, $holders, $markers,
-                       Title $title, $titleText, &$displayText = null, &$leadingColon = false ) {
-               if( isset( $displayText ) && $markers->findMarker( $displayText ) ) {
-                       # There are links inside of the displayText
-                       # For backwards compatibility the deepest links are dominant so this
-                       # link should not be handled
-                       $displayText = $markers->expand( $displayText );
-                       # Return false so that this link is reverted back to WikiText
-                       return false;
-               }
-               return $holders->makeHolder( $title, isset( $displayText ) ? $displayText : $titleText, array(), '', '' );
-       }
-
-       /**
-        * @param  $parser Parser
-        * @param  $holders LinkHolderArray
-        * @param  $markers LinkMarkerReplacer
-        * @param Title $title
-        * @param  $titleText
-        * @param null $sortText
-        * @param bool $leadingColon
-        * @return bool|string
-        */
-       static function categoryLinkHook( $parser, $holders, $markers,
-                       Title $title, $titleText, &$sortText = null, &$leadingColon = false ) {
-               global $wgContLang;
-               # When a category link starts with a : treat it as a normal link
-               if( $leadingColon ) return true;
-               if( isset( $sortText ) && $markers->findMarker( $sortText ) ) {
-                       # There are links inside of the sortText
-                       # For backwards compatibility the deepest links are dominant so this
-                       # link should not be handled
-                       $sortText = $markers->expand( $sortText );
-                       # Return false so that this link is reverted back to WikiText
-                       return false;
-               }
-               if( !isset( $sortText ) ) $sortText = $parser->getDefaultSort();
-               $sortText = Sanitizer::decodeCharReferences( $sortText );
-               $sortText = str_replace( "\n", '', $sortText );
-               $sortText = $wgContLang->convertCategoryKey( $sortText );
-               $parser->mOutput->addCategory( $title->getDBkey(), $sortText );
-               return '';
-       }
-
-}
index 957aa6a..b2bcd61 100644 (file)
@@ -219,8 +219,8 @@ class Parser {
                        self::EXT_LINK_URL_CLASS . '+)\p{Zs}*([^\]\\x00-\\x08\\x0a-\\x1F]*?)\]/Su';
                if ( isset( $conf['preprocessorClass'] ) ) {
                        $this->mPreprocessorClass = $conf['preprocessorClass'];
-               } elseif ( defined( 'MW_COMPILED' ) ) {
-                       # Preprocessor_Hash is much faster than Preprocessor_DOM in compiled mode
+               } elseif ( defined( 'HPHP_VERSION' ) ) {
+                       # Preprocessor_Hash is much faster than Preprocessor_DOM under HipHop
                        $this->mPreprocessorClass = 'Preprocessor_Hash';
                } elseif ( extension_loaded( 'domxml' ) ) {
                        # PECL extension that conflicts with the core DOM extension (bug 13770)
diff --git a/includes/parser/Parser_LinkHooks.php b/includes/parser/Parser_LinkHooks.php
deleted file mode 100644 (file)
index b2cdc41..0000000
+++ /dev/null
@@ -1,326 +0,0 @@
-<?php
-/**
- * Modified version of the PHP parser with hooks for wiki links; experimental
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Parser
- */
-
-/**
- * Parser with LinkHooks experiment
- * @ingroup Parser
- */
-class Parser_LinkHooks extends Parser {
-       /**
-        * Update this version number when the ParserOutput format
-        * changes in an incompatible way, so the parser cache
-        * can automatically discard old data.
-        */
-       const VERSION = '1.6.4';
-
-       # Flags for Parser::setLinkHook
-       # Also available as global constants from Defines.php
-       const SLH_PATTERN = 1;
-
-       # Constants needed for external link processing
-       # Everything except bracket, space, or control characters
-       const EXT_LINK_URL_CLASS = '[^][<>"\\x00-\\x20\\x7F]';
-       const EXT_IMAGE_REGEX = '/^(http:\/\/|https:\/\/)([^][<>"\\x00-\\x20\\x7F]+)
-               \\/([A-Za-z0-9_.,~%\\-+&;#*?!=()@\\x80-\\xFF]+)\\.((?i)gif|png|jpg|jpeg)$/Sx';
-
-       /**#@+
-        * @private
-        */
-       # Persistent:
-       var $mLinkHooks;
-
-       /**#@-*/
-
-       /**
-        * Constructor
-        */
-       public function __construct( $conf = array() ) {
-               parent::__construct( $conf );
-               $this->mLinkHooks = array();
-       }
-
-       /**
-        * Do various kinds of initialisation on the first call of the parser
-        */
-       function firstCallInit() {
-               parent::__construct();
-               if ( !$this->mFirstCall ) {
-                       return;
-               }
-               $this->mFirstCall = false;
-
-               wfProfileIn( __METHOD__ );
-
-               $this->setHook( 'pre', array( $this, 'renderPreTag' ) );
-               CoreParserFunctions::register( $this );
-               CoreLinkFunctions::register( $this );
-               $this->initialiseVariables();
-
-               wfRunHooks( 'ParserFirstCallInit', array( &$this ) );
-               wfProfileOut( __METHOD__ );
-       }
-
-       /**
-        * Create a link hook, e.g. [[Namepsace:...|display}}
-        * The callback function should have the form:
-        *    function myLinkCallback( $parser, $holders, $markers,
-        *      Title $title, $titleText, &$sortText = null, &$leadingColon = false ) { ... }
-        *
-        * Or with SLH_PATTERN:
-        *    function myLinkCallback( $parser, $holders, $markers, )
-        *      &$titleText, &$sortText = null, &$leadingColon = false ) { ... }
-        *
-        * The callback may either return a number of different possible values:
-        * String) Text result of the link
-        * True) (Treat as link) Parse the link according to normal link rules
-        * False) (Bad link) Just output the raw wikitext (You may modify the text first)
-        *
-        * @param $ns Integer or String: the Namespace ID or regex pattern if SLH_PATTERN is set
-        * @param $callback Mixed: the callback function (and object) to use
-        * @param $flags Integer: a combination of the following flags:
-        *     SLH_PATTERN   Use a regex link pattern rather than a namespace
-        *
-        * @throws MWException
-        * @return callback|null The old callback function for this name, if any
-        */
-       public function setLinkHook( $ns, $callback, $flags = 0 ) {
-               if( $flags & SLH_PATTERN && !is_string($ns) )
-                       throw new MWException( __METHOD__ . '() expecting a regex string pattern.' );
-               elseif( $flags | ~SLH_PATTERN && !is_int( $ns ) )
-                       throw new MWException( __METHOD__ . '() expecting a namespace index.' );
-               $oldVal = isset( $this->mLinkHooks[$ns] ) ? $this->mLinkHooks[$ns][0] : null;
-               $this->mLinkHooks[$ns] = array( $callback, $flags );
-               return $oldVal;
-       }
-
-       /**
-        * Get all registered link hook identifiers
-        *
-        * @return array
-        */
-       function getLinkHooks() {
-               return array_keys( $this->mLinkHooks );
-       }
-
-       /**
-        * Process [[ ]] wikilinks
-        * @param $s
-        * @throws MWException
-        * @return LinkHolderArray
-        *
-        * @private
-        */
-       function replaceInternalLinks2( &$s ) {
-               wfProfileIn( __METHOD__ );
-
-               wfProfileIn( __METHOD__ . '-setup' );
-               static $tc = false, $titleRegex; //$e1, $e1_img;
-               if( !$tc ) {
-                       # the % is needed to support urlencoded titles as well
-                       $tc = Title::legalChars() . '#%';
-                       # Match a link having the form [[namespace:link|alternate]]trail
-                       //$e1 = "/^([{$tc}]+)(?:\\|(.+?))?]](.*)\$/sD";
-                       # Match cases where there is no "]]", which might still be images
-                       //$e1_img = "/^([{$tc}]+)\\|(.*)\$/sD";
-                       # Match a valid plain title
-                       $titleRegex = "/^([{$tc}]+)$/sD";
-               }
-
-               $holders = new LinkHolderArray( $this );
-
-               if( is_null( $this->mTitle ) ) {
-                       wfProfileOut( __METHOD__ . '-setup' );
-                       wfProfileOut( __METHOD__ );
-                       throw new MWException( __METHOD__ . ": \$this->mTitle is null\n" );
-               }
-
-               wfProfileOut( __METHOD__ . '-setup' );
-
-               $offset = 0;
-               $offsetStack = array();
-               $markers = new LinkMarkerReplacer( $this, $holders, array( &$this, 'replaceInternalLinksCallback' ) );
-               while( true ) {
-                       $startBracketOffset = strpos( $s, '[[', $offset );
-                       $endBracketOffset   = strpos( $s, ']]', $offset );
-                       # Finish when there are no more brackets
-                       if( $startBracketOffset === false && $endBracketOffset === false ) break;
-                       # Determine if the bracket is a starting or ending bracket
-                       # When we find both, use the first one
-                       elseif( $startBracketOffset !== false && $endBracketOffset !== false )
-                               $isStart = $startBracketOffset <= $endBracketOffset;
-                       # When we only found one, check which it is
-                       else $isStart = $startBracketOffset !== false;
-                       $bracketOffset = $isStart ? $startBracketOffset : $endBracketOffset;
-                       if( $isStart ) {
-                               /** Opening bracket **/
-                               # Just push our current offset in the string onto the stack
-                               $offsetStack[] = $startBracketOffset;
-                       } else {
-                               /** Closing bracket **/
-                               # Pop the start pos for our current link zone off the stack
-                               $startBracketOffset = array_pop( $offsetStack );
-                               # Just to clean up the code, lets place offsets on the outer ends
-                               $endBracketOffset += 2;
-
-                               # Only do logic if we actually have a opening bracket for this
-                               if( isset( $startBracketOffset ) ) {
-                                       # Extract text inside the link
-                                       @list( $titleText, $paramText ) = explode( '|',
-                                               substr( $s, $startBracketOffset + 2, $endBracketOffset - $startBracketOffset - 4 ), 2 );
-                                       # Create markers only for valid links
-                                       if( preg_match( $titleRegex, $titleText ) ) {
-                                               # Store the text for the marker
-                                               $marker = $markers->addMarker( $titleText, $paramText );
-                                               # Replace the current link with the marker
-                                               $s = substr( $s, 0, $startBracketOffset ) .
-                                                       $marker .
-                                                       substr( $s, $endBracketOffset );
-                                               # We have modified $s, because of this we need to set the
-                                               # offset manually since the end position is different now
-                                               $offset = $startBracketOffset+strlen( $marker );
-                                               continue;
-                                       }
-                                       # ToDo: Some LinkHooks may allow recursive links inside of
-                                       # the link text, create a regex that also matches our
-                                       # <!-- LINKMARKER ### --> sequence in titles
-                                       # ToDO: Some LinkHooks use patterns rather than namespaces
-                                       # these need to be tested at this point here
-                               }
-                       }
-                       # Bump our offset to after our current bracket
-                       $offset = $bracketOffset+2;
-               }
-
-               # Now expand our tree
-               wfProfileIn( __METHOD__ . '-expand' );
-               $s = $markers->expand( $s );
-               wfProfileOut( __METHOD__ . '-expand' );
-
-               wfProfileOut( __METHOD__ );
-               return $holders;
-       }
-
-       function replaceInternalLinksCallback( $parser, $holders, $markers, $titleText, $paramText ) {
-               wfProfileIn( __METHOD__ );
-               $wt = isset( $paramText ) ? "[[$titleText|$paramText]]" : "[[$titleText]]";
-               wfProfileIn( __METHOD__ . "-misc" );
-
-               # Don't allow internal links to pages containing
-               # PROTO: where PROTO is a valid URL protocol; these
-               # should be external links.
-               if( preg_match( '/^\b(?i:' . wfUrlProtocols() . ')/', $titleText ) ) {
-                       wfProfileOut( __METHOD__ . "-misc" );
-                       wfProfileOut( __METHOD__ );
-                       return $wt;
-               }
-
-               # Make subpage if necessary
-               if( $this->areSubpagesAllowed() ) {
-                       $titleText = $this->maybeDoSubpageLink( $titleText, $paramText );
-               }
-
-               # Check for a leading colon and strip it if it is there
-               $leadingColon = $titleText[0] == ':';
-               if( $leadingColon ) $titleText = substr( $titleText, 1 );
-
-               wfProfileOut( __METHOD__ . "-misc" );
-               # Make title object
-               wfProfileIn( __METHOD__ . "-title" );
-               $title = Title::newFromText( $this->mStripState->unstripNoWiki( $titleText ) );
-               if( !$title ) {
-                       wfProfileOut( __METHOD__ . "-title" );
-                       wfProfileOut( __METHOD__ );
-                       return $wt;
-               }
-               $ns = $title->getNamespace();
-               wfProfileOut( __METHOD__ . "-title" );
-
-               # Default for Namespaces is a default link
-               # ToDo: Default for patterns is plain wikitext
-               $return = true;
-               if( isset( $this->mLinkHooks[$ns] ) ) {
-                       list( $callback, $flags ) = $this->mLinkHooks[$ns];
-                       if( $flags & SLH_PATTERN ) {
-                               $args = array( $parser, $holders, $markers, $titleText, &$paramText, &$leadingColon );
-                       } else {
-                               $args = array( $parser, $holders, $markers, $title, $titleText, &$paramText, &$leadingColon );
-                       }
-                       # Workaround for PHP bug 35229 and similar
-                       if ( !is_callable( $callback ) ) {
-                               throw new MWException( "Tag hook for namespace $ns is not callable\n" );
-                       }
-                       $return = call_user_func_array( $callback, $args );
-               }
-               if( $return === true ) {
-                       # True (treat as plain link) was returned, call the defaultLinkHook
-                       $return = CoreLinkFunctions::defaultLinkHook( $parser, $holders, $markers, $title,
-                               $titleText, $paramText, $leadingColon );
-               }
-               if( $return === false ) {
-                       # False (no link) was returned, output plain wikitext
-                       # Build it again as the hook is allowed to modify $paramText
-                       $return = isset( $paramText ) ? "[[$titleText|$paramText]]" : "[[$titleText]]";
-               }
-               # Content was returned, return it
-               wfProfileOut( __METHOD__ );
-               return $return;
-       }
-
-}
-
-class LinkMarkerReplacer {
-
-       protected $markers, $nextId, $parser, $holders, $callback;
-
-       function __construct( $parser, $holders, $callback ) {
-               $this->nextId   = 0;
-               $this->markers  = array();
-               $this->parser   = $parser;
-               $this->holders  = $holders;
-               $this->callback = $callback;
-       }
-
-       function addMarker( $titleText, $paramText ) {
-               $id = $this->nextId++;
-               $this->markers[$id] = array( $titleText, $paramText );
-               return "<!-- LINKMARKER $id -->";
-       }
-
-       function findMarker( $string ) {
-               return (bool) preg_match( '/<!-- LINKMARKER [0-9]+ -->/', $string );
-       }
-
-       function expand( $string ) {
-               return StringUtils::delimiterReplaceCallback( "<!-- LINKMARKER ", " -->", array( &$this, 'callback' ), $string );
-       }
-
-       function callback( $m ) {
-               $id = intval( $m[1] );
-               if( !array_key_exists( $id, $this->markers ) ) return $m[0];
-               $args = $this->markers[$id];
-               array_unshift( $args, $this );
-               array_unshift( $args, $this->holders );
-               array_unshift( $args, $this->parser );
-               return call_user_func_array( $this->callback, $args );
-       }
-}
index e3ea40b..0625140 100644 (file)
@@ -244,7 +244,7 @@ class MWTidy {
                global $wgTidyConf, $wgDebugTidy;
                wfProfileIn( __METHOD__ );
 
-               if ( !MWInit::classExists( 'tidy' ) ) {
+               if ( !class_exists( 'tidy' ) ) {
                        wfWarn( "Unable to load internal tidy class." );
                        $retval = -1;
 
index c77fef5..6f112ae 100644 (file)
@@ -623,7 +623,7 @@ class Profiler {
         * @param string $s to output
         */
        function debug( $s ) {
-               if ( defined( 'MW_COMPILED' ) || function_exists( 'wfDebug' ) ) {
+               if ( function_exists( 'wfDebug' ) ) {
                        wfDebug( $s );
                }
        }
index 2b9a322..9204763 100644 (file)
@@ -41,7 +41,7 @@ class ProfilerSimpleUDP extends ProfilerSimple {
                        return;
                }
 
-               if ( !MWInit::functionExists( 'socket_create' ) ) {
+               if ( !function_exists( 'socket_create' ) ) {
                        # Sockets are not enabled
                        return;
                }
index 13e8a00..a975b03 100644 (file)
@@ -59,7 +59,7 @@ class SearchEngine {
         * STUB
         *
         * @param string $term raw search term
-        * @return SearchResultSet
+        * @return SearchResultSet|Status|null
         */
        function searchText( $term ) {
                return null;
@@ -71,7 +71,7 @@ class SearchEngine {
         * STUB
         *
         * @param string $term raw search term
-        * @return SearchResultSet
+        * @return SearchResultSet|null
         */
        function searchTitle( $term ) {
                return null;
index 52261c9..21becd6 100644 (file)
@@ -388,7 +388,7 @@ class SpecialContributions extends SpecialPage {
                }
 
                if ( !isset( $this->opts['year'] ) ) {
-                       $this->opts['year'] = gmdate( 'Y' );
+                       $this->opts['year'] = '';
                }
 
                if ( !isset( $this->opts['month'] ) ) {
@@ -566,7 +566,7 @@ class SpecialContributions extends SpecialPage {
 
                $dateSelectionAndSubmit = Xml::tags( 'td', array( 'colspan' => 2 ),
                        Xml::dateMenu(
-                               $this->opts['year'],
+                               $this->opts['year'] === '' ? gmdate( 'Y' ) : $this->opts['year'],
                                $this->opts['month']
                        ) . ' ' .
                                Xml::submitButton(
index e7a86a6..e4bce1c 100644 (file)
@@ -293,8 +293,11 @@ class MovePageForm extends UnlistedSpecialPage {
                                        Xml::label( $this->msg( 'movereason' )->text(), 'wpReason' ) .
                                "</td>
                                <td class='mw-input'>" .
-                                       Html::element( 'textarea', array( 'name' => 'wpReason', 'id' => 'wpReason', 'cols' => 60, 'rows' => 2,
-                                       'maxlength' => 200 ), $this->reason ) .
+                                       Xml::input( 'wpReason', 60, $this->reason, array(
+                                               'type' => 'text',
+                                               'id' => 'wpReason',
+                                               'maxlength' => 200,
+                                       ) ) .
                                "</td>
                        </tr>"
                );
index 5fcf9ae..ee5940f 100644 (file)
@@ -52,7 +52,7 @@ class SpecialPreferences extends SpecialPage {
 
                if ( $this->getRequest()->getCheck( 'success' ) ) {
                        $out->wrapWikiMsg(
-                               "<div class=\"successbox\">\n$1\n</div>",
+                               "<div class=\"successbox mw-sp-pref-successbox\">\n$1\n</div>",
                                'savedprefs'
                        );
                }
index bb57e6c..b147b83 100644 (file)
@@ -1105,6 +1105,8 @@ class LoginForm extends SpecialPage {
                                $out->addJsConfigVars( 'wgCreateacctImgcaptchaHelp',
                                        $this->msg( 'createacct-imgcaptcha-help' )->parse() );
                                $out->addModules( 'mediawiki.special.createaccount.vform.js' );
+                               // Must match number of benefits defined in messages
+                               $template->set( 'benefitCount', 3 );
                        } else {
                                $template = new UsercreateTemplate();
                        }
index b8ce27e..626f880 100644 (file)
@@ -265,27 +265,21 @@ class UsercreateTemplateVForm extends BaseTemplate {
 <div class="mw-createacct-benefits-container">
        <h2><?php $this->msg( 'createacct-benefit-heading' ); ?></h2>
        <div class="mw-createacct-benefits-list">
+       <?php
+       for ( $benefitIdx = 1; $benefitIdx <= $this->data['benefitCount']; $benefitIdx++ ) {
+               // Pass each benefit's head text (by default a number) as a parameter to the body's message for PLURAL handling.
+               $headUnescaped = $this->getMsg( "createacct-benefit-head$benefitIdx" )->text();
+       ?>
                <div>
-                       <div class="mw-benefits-icon <?php $this->msg( 'createacct-benefit-icon1' ); ?>"></div>
-                       <div class="mw-number-text">
-                               <h3><?php $this->msg( 'createacct-benefit-head1' ); ?></h3>
-                               <p><?php $this->msg( 'createacct-benefit-body1' ); ?></p>
-                       </div>
-               </div>
-               <div>
-                       <div class="mw-benefits-icon <?php $this->msg( 'createacct-benefit-icon2' ); ?>"></div>
-                       <div class="mw-number-text">
-                               <h3><?php $this->msg( 'createacct-benefit-head2' ); ?></h3>
-                               <p><?php $this->msg( 'createacct-benefit-body2' ); ?></p>
-                       </div>
-               </div>
-               <div>
-                       <div class="mw-benefits-icon <?php $this->msg( 'createacct-benefit-icon3' ); ?>"></div>
+                       <div class="mw-benefits-icon <?php $this->msg( "createacct-benefit-icon$benefitIdx" ); ?>"></div>
                        <div class="mw-number-text">
-                               <h3><?php $this->msg( 'createacct-benefit-head3' ); ?></h3>
-                               <p><?php $this->msg( 'createacct-benefit-body3' ); ?></p>
+                               <h3><?php $this->msg( "createacct-benefit-head$benefitIdx" ); ?></h3>
+                               <p><?php echo $this->getMsg( "createacct-benefit-body$benefitIdx" )->params( $headUnescaped )->escaped(); ?></p>
                        </div>
                </div>
+       <?php
+       }
+       ?>
        </div>
 </div>
 </div>
index 0e9676d..6039769 100644 (file)
--- a/index.php
+++ b/index.php
@@ -49,11 +49,7 @@ if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.
 # Initialise common code.  This gives us access to GlobalFunctions, the
 # AutoLoader, and the globals $wgRequest, $wgOut, $wgUser, $wgLang and
 # $wgContLang, amongst others; it does *not* load $wgTitle
-if ( isset( $_SERVER['MW_COMPILED'] ) ) {
-       require ( 'phase3/includes/WebStart.php' );
-} else {
-       require ( __DIR__ . '/includes/WebStart.php' );
-}
+require ( __DIR__ . '/includes/WebStart.php' );
 
 $mediaWiki = new MediaWiki();
 $mediaWiki->run();
index 2fd4bb7..137b9a9 100644 (file)
@@ -414,10 +414,8 @@ class Language {
                        return;
                }
 
-               if ( !defined( 'MW_COMPILED' ) ) {
-                       if ( file_exists( "$IP/languages/classes/$class.php" ) ) {
-                               include_once( "$IP/languages/classes/$class.php" );
-                       }
+               if ( file_exists( "$IP/languages/classes/$class.php" ) ) {
+                       include_once( "$IP/languages/classes/$class.php" );
                }
        }
 
index d9227d7..3770b9b 100644 (file)
@@ -1357,6 +1357,37 @@ class ConverterRule {
                }
        }
 
+       /**
+        * Similar to getRuleConvertedStr(), but this prefers to use original
+        * page title if $variant === $this->mConverter->mMainLanguageCode
+        * and may return false in this case (so this title conversion rule
+        * will be ignored and the original title is shown).
+        *
+        * @since 1.21
+        * @param $variant The variant code to display page title in
+        * @return String|false The converted title or false if just page name
+        */
+       function getRuleConvertedTitle( $variant ) {
+               if ( $variant === $this->mConverter->mMainLanguageCode ) {
+                       // If a string targeting exactly this variant is set,
+                       // use it. Otherwise, just return false, so the real
+                       // page name can be shown (and because variant === main,
+                       // there'll be no further automatic conversion).
+                       $disp = $this->getTextInBidtable( $variant );
+                       if ( $disp ) {
+                               return $disp;
+                       }
+                       if ( array_key_exists( $variant, $this->mUnidtable ) ) {
+                               $disp = array_values( $this->mUnidtable[$variant] );
+                               $disp = $disp[0];
+                       }
+                       // Assigned above or still false.
+                       return $disp;
+               } else {
+                       return $this->getRuleConvertedStr( $variant );
+               }
+       }
+
        /**
         * Generate conversion table for all text.
         * @private
@@ -1509,7 +1540,7 @@ class ConverterRule {
                                        $this->mRuleDisplay = $this->getRuleConvertedStr( $variant );
                                        break;
                                case 'T':
-                                       $this->mRuleTitle = $this->getRuleConvertedStr( $variant );
+                                       $this->mRuleTitle = $this->getRuleConvertedTitle( $variant );
                                        $this->mRuleDisplay = '';
                                        break;
                                default:
index bd40e0e..9ce43d7 100644 (file)
@@ -667,7 +667,7 @@ Moenie vergeet om u [[Special:Preferences|voorkeure vir {{SITENAME}}]] te stel n
 'createacct-reason-ph' => "Hoekom u nog 'n rekening skep",
 'createacct-captcha' => 'Veiligheidskontrole',
 'createacct-captcha-help-url' => '{{ns:Project}}:Gebruiker_aanvra',
-'createacct-imgcaptcha-help' => "Kan nie die beeld sien nie? [[{{MediaWiki:createacct-captcha-help-url}}|Vra dan 'n gebruiker aan]]",
+'createacct-imgcaptcha-help' => "Kan nie die beeld sien nie? [[{{MediaWiki:createacct-captcha-help-url}}|Vra dan 'n gebruiker aan]]",
 'createacct-imgcaptcha-ph' => 'Sleutel die teks hierbo in',
 'createacct-submit' => 'Skep u rekening',
 'createacct-benefit-heading' => '{{SITENAME}} word deur mense soos u geskep.',
@@ -2195,6 +2195,15 @@ Benodig ten minste een topvlakdomein, soos byvoorbeeld "*.org".<br />
 'listusers-noresult' => 'Geen gebruikers gevind nie.',
 'listusers-blocked' => '(geblokkeer)',
 
+# Special:ActiveUsers
+'activeusers' => 'Aktiewe gebruikers',
+'activeusers-intro' => "Hierdie is 'n lys van gebruikers wat die laaste {{PLURAL:$1|dag|$1 dae}} enige aktiwiteit getoon het.",
+'activeusers-count' => '$1 onlangse {{PLURAL:$1|wysiging|wysigings}} in die {{PLURAL:$3|afgelope dag|laatste $3 dae}}',
+'activeusers-from' => 'Wys gebruikers, beginnende by:',
+'activeusers-hidebots' => 'Versteek bots',
+'activeusers-hidesysops' => 'Versteek administrateurs',
+'activeusers-noresult' => 'Geen gebruikers gevind nie.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Gebruikersgroepregte',
 'listgrouprights-summary' => "Hier volg 'n lys van gebruikersgroepe met hulle ooreenstemmende regte wat op die wiki gedefinieer is.
index 4e57ce9..0639d4d 100644 (file)
@@ -832,6 +832,9 @@ Gif se brūcend asifte hine. synderlīce sind ymelan geīwda þǣre þe se brūc
 # Special:ListUsers
 'listusers-noresult' => 'Nān brūcend wæs gefunden.',
 
+# Special:ActiveUsers
+'activeusers' => 'Hƿata brūcenda ȝetalu',
+
 # Special:ListGroupRights
 'listgrouprights-group' => 'Hēap',
 'listgrouprights-rights' => 'Riht',
index 1a948d8..9c471d4 100644 (file)
@@ -2477,6 +2477,15 @@ $1',
 'listusers-noresult' => 'لم يتم إيجاد مستخدم.',
 'listusers-blocked' => '(ممنوع)',
 
+# Special:ActiveUsers
+'activeusers' => 'قائمة المستخدمين النشطين',
+'activeusers-intro' => 'هذه قائمة بالمستخدمين الذين مارسوا نوعاً من النشاط خلال {{PLURAL:$1||اليوم الماضي|اليومين الماضيين|ال$1 أيام الماضية|ال$1 يوماً ماضياً|ال$1 يوم ماضي}}.',
+'activeusers-count' => '{{PLURAL:$1|لا أفعال|فعل واحد|فعلان اثنان|$1 أفعال|$1 فعلاً|$1 فعل}} منذ {{PLURAL:$3||يوم|يومين|$3 أيام|$3 يوماً|$1 يوم}}',
+'activeusers-from' => 'اعرض المستخدمين بدءاً من:',
+'activeusers-hidebots' => 'أخف البوتات',
+'activeusers-hidesysops' => 'أخف الإداريين',
+'activeusers-noresult' => 'لم يعثر على أي مستخدمين',
+
 # Special:ListGroupRights
 'listgrouprights' => 'صلاحيات مجموعات المستخدمين',
 'listgrouprights-summary' => 'التالي قائمة بمجموعات المستخدمين المعرفة في هذا الويكي، بصلاحياتهم المصاحبة.
index 225ffb8..d815925 100644 (file)
@@ -607,7 +607,7 @@ $2',
 'createacct-yourpasswordagain' => 'গুপ্তশব্দ নিশ্চিত কৰক',
 'createacct-yourpasswordagain-ph' => 'গুপ্তশব্দ আকৌ লিখক',
 'remembermypassword' => 'মোৰ প্ৰৱেশ এই কম্পিউটাৰত মনত ৰাখিব (সৰ্বাধিক $1 {{PLURAL:$1|দিনলৈ|দিনলৈ}})',
-'userlogin-remembermypassword' => 'মà§\8bৰ à¦ªà§\8dৰৱà§\87শ à¦®à¦¨à¦¤ ৰাখক',
+'userlogin-remembermypassword' => 'মà§\8bà¦\95 à¦²à¦\97à§\8dâ\80\8c-à¦\87ন à¦\95ৰাà¦\87 ৰাখক',
 'userlogin-signwithsecure' => 'নিৰাপদ চাৰ্ভাৰৰ মাধ্যমেৰে প্ৰৱেশ কৰক',
 'securelogin-stick-https' => 'প্ৰৱেশ কৰা পাছত HTTPS-ৰ দ্বাৰা সংযোগ ৰাখক',
 'yourdomainname' => 'আপোনাৰ ডমেইন:',
@@ -629,7 +629,7 @@ $2',
 'gotaccount' => "আপুনি সদস্য হয়নে? '''$1'''",
 'gotaccountlink' => 'প্ৰৱেশ',
 'userlogin-resetlink' => 'আপোনাৰ প্ৰৱেশ তথ্য পাহৰিছে?',
-'helplogin-url' => 'সহায়:প্ৰৱেশ',
+'helplogin-url' => 'সহায়:প্ৰৱেশ/লগ্‌-ইন',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|প্ৰৱেশ সম্পৰ্কীয় সাহায্য]]',
 'createacct-join' => 'আপোনাৰ তথ্যসমূহ তলত লিখক।',
 'createacct-emailrequired' => 'ই-মেইল ঠিকনা',
@@ -639,14 +639,16 @@ $2',
 'createacct-realname' => 'প্ৰকৃত নাম (বৈকল্পিক)',
 'createaccountreason' => 'কাৰণ:',
 'createacct-reason' => 'কাৰণ',
+'createacct-reason-ph' => 'আপুনি কিয় আন এটা একাউণ্ট সৃষ্টি কৰিছে',
 'createacct-captcha' => 'সুৰক্ষা পৰীক্ষা',
 'createacct-captcha-help-url' => '{{ns:Project}}:এটা একাউণ্টৰ বাবে অনুৰোধ কৰক',
 'createacct-imgcaptcha-help' => 'ছবিখন দেখা পোৱা নাই? [[{{MediaWiki:createacct-captcha-help-url}}|এটা একাউণ্টৰ বাবে অনুৰোধ কৰক]]',
 'createacct-imgcaptcha-ph' => 'ওপৰত দেখা পোৱা পাঠ্য লিখক',
+'createacct-submit' => 'আপোনাৰ একাউণ্ট সৃষ্টি কৰক',
 'createacct-benefit-heading' => 'আপোনাৰ দৰে মানুহেই {{SITENAME}} তৈয়াৰ কৰিছে',
 'createacct-benefit-body1' => 'সম্পাদনাসমূহ',
 'createacct-benefit-body2' => 'পৃষ্ঠাসমূহ',
-'createacct-benefit-body3' => 'à¦\8fà¦\87 à¦®à¦¾à¦¹à§° অৱদানকাৰীসকল',
+'createacct-benefit-body3' => 'শà§\87হতà§\80য়া অৱদানকাৰীসকল',
 'badretype' => 'আপুনি দিয়া গুপ্ত শব্দ দুটা মিলা নাই।',
 'userexists' => 'আপুনি দিয়া সদস্যনাম আগৰে পৰাই ব্যৱহাৰ হৈ আছে।
 অনুগ্ৰহ কৰি বেলেগ সদস্যনাম এটা নিৰ্বাচন কৰক।',
@@ -741,6 +743,7 @@ $2',
 'resetpass-wrong-oldpass' => 'অস্থায়ী বা সাম্প্ৰতিক গুপ্তশব্দ গ্ৰহণযোগ্য নহয় ।
 হয়টো আপুনি ইতিমধ্যেই সফলভাবে আপুনাৰ গুপ্তশব্দ সলনি কৰিছিল বা এটা নতুন অস্থায়ী গুপ্তশব্দৰ বাবে অনুৰোধ কৰিছিল ।',
 'resetpass-temp-password' => 'অস্থায়ী গুপ্তশব্দ:',
+'resetpass-abort-generic' => 'এটা এক্সটেন্‌ছনৰদ্বাৰা গুপ্তশব্দ সলনি কাৰ্য বাতিল কৰা হৈছে।',
 
 # Special:PasswordReset
 'passwordreset' => 'গুপ্তশব্দ ন-কৈ বহাওক',
@@ -1430,6 +1433,7 @@ $1",
 'userrights-notallowed' => 'সদস্যৰ অধিকাৰ যোগ কৰিবলৈ বা আঁতৰ কৰিবলৈ আপোনাৰ একাউণ্টৰ অনুমতি নাই ।',
 'userrights-changeable-col' => 'আপুনি সলনি কৰিব পৰা গোটসমূহ',
 'userrights-unchangeable-col' => 'আপুনি সলনি কৰিব নোৱাৰা গোটসমূহ',
+'userrights-conflict' => 'সদস্য অধিকাৰ দ্বন্দ্ব! অনুগ্ৰহ কৰি আপোনাৰ সালসলনি আকৌ এবাৰ প্ৰয়োগ কৰক।',
 
 # Groups
 'group' => 'গোট:',
@@ -2167,6 +2171,15 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'listusers-noresult' => 'ব্যৱহাৰকাৰী বিচাৰি পোৱা নগ’ল',
 'listusers-blocked' => '(বাৰণ কৰা)',
 
+# Special:ActiveUsers
+'activeusers' => 'সক্ৰিয় ব্যবহাৰকাৰীৰ তালিকা',
+'activeusers-intro' => 'যোৱা  {{PLURAL:$1|দিন|দিন}}ৰ ভিতৰত অৱদান আগবঢ়োৱা ব্যৱহাৰকাৰীৰ তালিকা',
+'activeusers-count' => 'যোৱা {{PLURAL:$3|দিনত|$3 দিনত}} কৰা $1{{PLURAL:$1|টা কাম|টা কাম}} সংখ্যা',
+'activeusers-from' => 'ইয়াৰে আৰম্ভ হোৱা ব্যৱহাৰকাৰী সকল দেখুৱাওক:',
+'activeusers-hidebots' => 'বট নেদেখুৱাব',
+'activeusers-hidesysops' => 'প্ৰশাসক নেদেখুৱাব',
+'activeusers-noresult' => "কোনো সদস্য পোৱা নগ'ল।",
+
 # Special:ListGroupRights
 'listgrouprights' => 'ব্যৱহাৰকাৰী গোটৰ অধিকাৰ',
 'listgrouprights-summary' => 'এই ৱিকিত থকা গোটসমূহৰ তালিকা সেইবোৰৰ প্ৰৱেশাধিকাৰসহ তলত দিয়া হ’ল ।
@@ -2891,6 +2904,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'import-error-interwiki' => '"$1" পৃষ্ঠাখন আমদানি কৰা নহ\'ল কাৰণ ইয়াৰ নামটো বাহিৰা সংযোগৰ (আন্তঃৱিকি) বাবে সংৰক্ষিত।',
 'import-error-special' => '"$1" পৃষ্ঠাখন আমদানি কৰা নহ\'ল কাৰণ ই পৃষ্ঠা অনুমোদন নকৰা এটা বিশেষ নামস্থানৰ অন্তৰ্গত।',
 'import-error-invalid' => '"$1" পৃষ্ঠাখন আমদানি কৰা নহ\'ল কাৰণ ইয়াৰ নামটো অবৈধ।',
+'import-error-unserialize' => ' "$1" পৃষ্ঠাৰ $2 সংশোধনৰ ক্ৰম আঁতৰ কৰিব পৰা নগ\'ল। এই সংশোধনে $4 ক্ৰমৰ সমল মডেল $3 ব্যৱহাৰ কৰা বুলি জনোৱা হৈছিল।',
 'import-options-wrong' => 'ভুল {{PLURAL:$2|বিকল্প|বিকল্পসমূহ}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'মূল পৃষ্ঠাৰ শিৰোনামা অবৈধ।',
 'import-rootpage-nosubpage' => 'মূল পৃষ্ঠাৰ "$1" নামস্থানে উপপৃষ্ঠা অনুমোদন নকৰে।',
@@ -3024,6 +3038,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'pageinfo-robot-noindex' => 'ইনডেক্সৰ অনুপযোগী',
 'pageinfo-views' => 'দৰ্শনৰ সংখ্যা',
 'pageinfo-watchers' => 'পৃষ্ঠা নিৰীক্ষকৰ সংখ্যা',
+'pageinfo-few-watchers' => '$1 {{PLURAL:$1|তকৈ কম নিৰীক্ষক}}',
 'pageinfo-redirects-name' => 'পৃষ্ঠালৈ থকা পুনৰ্নিৰ্দেশ',
 'pageinfo-subpages-name' => 'এই পৃষ্ঠাৰ উপপৃষ্ঠাসমূহ',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|পুনৰ্নিৰ্দেশ|পুনৰ্নিৰ্দেশসমূহ}}; $3 {{PLURAL:$3|অপুনৰ্নিৰ্দেশ নাই|অপুনৰ্নিৰ্দেশসমূহ}})',
@@ -3126,8 +3141,8 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 মিনিট|$1 মিনিট}}',
 'hours' => '{{PLURAL:$1|$1 ঘন্টা|$1 ঘন্টা}}',
 'days' => '{{PLURAL:$1|$1 দিন|$1 দিন}}',
-'weeks' => '{{PLURAL:$1|$1 সপ্তাহ|$1 সপ্তাহ}}',
-'months' => '{{PLURAL:$1|$1 মাহ|$1 মাহ}}',
+'weeks' => '{{PLURAL:$1|$1 সপ্তাহ}}',
+'months' => '{{PLURAL:$1|$1 মাহ}}',
 'years' => '{{PLURAL:$1|$1বছৰ|$1 বছৰ}}',
 'ago' => '$1 আগেয়ে',
 'just-now' => 'এইমাত্ৰ',
index e61bf94..729156a 100644 (file)
@@ -2061,6 +2061,15 @@ Necesita polo menos un dominiu de primer nivel, como "*.org".<br />
 'listusers-noresult' => "Nun s'atoparon usuarios.",
 'listusers-blocked' => '(bloquiau)',
 
+# Special:ActiveUsers
+'activeusers' => "Llista d'usuarios activos",
+'activeusers-intro' => "Esta ye una llista d'usuarios que tuvieron alguna mena d'actividá hai menos de $1 {{PLURAL:$1|día|díes}}.",
+'activeusers-count' => '$1 {{PLURAL:$1|edición|ediciones}} {{PLURAL:$3|nel caberu día|nos caberos $3 díes}}',
+'activeusers-from' => 'Amosar usuarios principiando dende:',
+'activeusers-hidebots' => 'Anubrir bots',
+'activeusers-hidesysops' => 'Anubrir alministradores',
+'activeusers-noresult' => "Nun s'alcontraron usuarios.",
+
 # Special:ListGroupRights
 'listgrouprights' => "Drechos de los grupos d'usuariu",
 'listgrouprights-summary' => "La siguiente ye una llista de grupos d'usuariu definíos nesta wiki, colos sos drechos d'accesu asociaos.
index aee72b1..a8a0f72 100644 (file)
@@ -2071,6 +2071,15 @@ $1',
 'listusers-noresult' => 'Ҡатнашыусылар табылманы',
 'listusers-blocked' => '(бикләнгән)',
 
+# Special:ActiveUsers
+'activeusers' => 'Әүҙем ҡатнашыусылар исемлеге',
+'activeusers-intro' => 'Был — һуңғы $1 {{PLURAL:$1|көн}} эсендә ниҙер башҡарған ҡатнашыусылар исемлеге.',
+'activeusers-count' => 'һуңғы $3 {{PLURAL:$3|көн}} эсендә $1 {{PLURAL:$1|үҙгәртеү}}',
+'activeusers-from' => 'Ошондай хәрефтәрҙән башланған ҡатнашыусыларҙы күрһәтергә:',
+'activeusers-hidebots' => 'Боттарҙы йәшерергә',
+'activeusers-hidesysops' => 'Хәкимдәрҙе йәшерергә',
+'activeusers-noresult' => 'Ҡатнашыусылар табылманы',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Ҡатнашыусылар төркөмө хоҡуҡтары',
 'listgrouprights-summary' => 'Түбәндә был вики-проектта билдәләнгән ҡатнашыусы төркөмдәре килтерелгән һәм уларҙың хоҡуҡтары күрһәтелгән.
index 1a2f57d..3babb36 100644 (file)
@@ -2065,6 +2065,15 @@ Suportadong {{PLURAL:$2|protokol|mga protokol}}: <code>$1</code> (defaults to ht
 'listusers-noresult' => 'Mayong nakuang parágamit.',
 'listusers-blocked' => '(pinagbarado)',
 
+# Special:ActiveUsers
+'activeusers' => 'Listahan kan aktibong paragamit',
+'activeusers-intro' => 'Iyo in an listahan kan mga paragamit na nagkaigwa nin mga ginibo sa laog kan nakaaging $1 {{PLURAL:$1|aldaw|mga aldaw}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|aksyon|mga aksyon}} sa nakaaging {{PLURAL:$3|aldaw|$3 mga aldaw}}',
+'activeusers-from' => 'Ipahiling an mga paragamit magpoon sa:',
+'activeusers-hidebots' => 'Itago an mga panalnga',
+'activeusers-hidesysops' => 'Itago an mga administrador',
+'activeusers-noresult' => 'Mayong mga paragamit na nanagboan.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Mga karapatan kan grupo nin paragamit',
 'listgrouprights-summary' => 'An minasunod iyo an listahan kan mga grupo nin paragamit na pinaghunsay kaining wiki, kaiba an saindang asosyadong mga karapatan nin paggamit.
index 8c40e50..eafbba9 100644 (file)
@@ -717,10 +717,12 @@ $2',
 'createacct-realname' => 'Сапраўднае імя (неабавязкова)',
 'createaccountreason' => 'Прычына:',
 'createacct-reason' => 'Прычына',
+'createacct-reason-ph' => 'Зь якой мэтай вы ствараеце іншы рахунак',
 'createacct-captcha' => 'Праверка бясьпекі',
 'createacct-captcha-help-url' => '{{ns:Project}}:Запыты рахункаў',
 'createacct-imgcaptcha-help' => 'Ня бачыце рысунак? [[{{MediaWiki:createacct-captcha-help-url}}|Запытайце рахунак]]',
 'createacct-imgcaptcha-ph' => 'Увядзіце тэкст, што бачыце вышэй',
+'createacct-submit' => 'Стварыць рахунак',
 'createacct-benefit-heading' => '{{SITENAME}} створаная людзьмі, такімі як вы.',
 'createacct-benefit-body1' => 'правак',
 'createacct-benefit-body2' => 'старонак',
@@ -2219,6 +2221,15 @@ $1',
 'listusers-noresult' => 'Удзельнікі ня знойдзеныя.',
 'listusers-blocked' => '({{GENDER:$1|заблякаваны|заблякаваная}})',
 
+# Special:ActiveUsers
+'activeusers' => 'Сьпіс актыўных удзельнікаў',
+'activeusers-intro' => 'Гэта сьпіс удзельнікаў, якія былі актыўнымі на працягу $1 {{PLURAL:$1|апошняга дня|апошніх дзён|апошніх дзён}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|дзеяньне|дзеяньні|дзеяньняў}} за $3 {{PLURAL:$3|апошні дзень|апошнія дні|апошніх дзён}}',
+'activeusers-from' => 'Паказваць ўдзельнікаў, пачынаючы з:',
+'activeusers-hidebots' => 'Схаваць робатаў',
+'activeusers-hidesysops' => 'Схаваць адміністратараў',
+'activeusers-noresult' => 'Удзельнікі ня знойдзеныя.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Правы групаў удзельнікаў',
 'listgrouprights-summary' => 'Ніжэй пададзены сьпіс групаў удзельнікаў {{GRAMMAR:родны|{{SITENAME}}}}, разам зь іх правамі.
index 3c232f4..77b7f08 100644 (file)
@@ -2082,6 +2082,15 @@ $1',
 'listusers-noresult' => 'Няма намерени потребители.',
 'listusers-blocked' => '(блокиран)',
 
+# Special:ActiveUsers
+'activeusers' => 'Списък на активните потребители',
+'activeusers-intro' => 'Това е списък на потребителите, които са демонстрирали някаква активност през {{PLURAL:$1|последния|последните}} $1 {{PLURAL:$1|ден|дни}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|действие|действия}} за {{PLURAL:$3|последния ден|последните $3 дни}}',
+'activeusers-from' => 'Показване на потребителите, започвайки от:',
+'activeusers-hidebots' => 'Скриване на ботовете',
+'activeusers-hidesysops' => 'Скриване на администраторите',
+'activeusers-noresult' => 'Няма намерени потребители.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Права по потребителски групи',
 'listgrouprights-summary' => 'По-долу на тази страница е показан списък на групите потребители в това уики с асоциираните им права за достъп. Допълнителна информация за отделните права може да бъде намерена [[{{MediaWiki:Listgrouprights-helppage}}|тук]].',
index ba15bf1..4a987da 100644 (file)
@@ -489,9 +489,12 @@ $2',
 'yourpassword' => 'শব্দচাবি:',
 'userlogin-yourpassword' => 'শব্দচাবি (Password)',
 'userlogin-yourpassword-ph' => 'আপনার শব্দচাবি (পাসওয়ার্ড) লিখুন',
+'createacct-yourpassword-ph' => 'শব্দচাবি প্রদান করুন',
 'yourpasswordagain' => 'শব্দচাবিটি (password) আবার লিখুন',
+'createacct-yourpasswordagain' => 'শব্দচাবি নিশ্চিত করুন',
+'createacct-yourpasswordagain-ph' => 'আবারও শব্দচাবি প্রদান করুন',
 'remembermypassword' => 'একাধিক সেশনের জন্য শব্দচাবি মনে রাখা হোক (সর্বোচ্চ $1 {{PLURAL:$1|দিনের|দিনের}} জন্য)',
-'userlogin-remembermypassword' => 'à¦\86মাà¦\95à§\87 à¦®à¦¨à§\87 রাখো',
+'userlogin-remembermypassword' => 'à¦\86মাà¦\95à§\87 à¦ªà§\8dরবà§\87শ à¦\85বসà§\8dথায় রাখো',
 'userlogin-signwithsecure' => 'নিরাপদ সার্ভারের মাধ্যমে লগইন করুন',
 'securelogin-stick-https' => 'লগইনের পর এইচটিটিপিএস-এর সাথে সংযোগকৃত থাকুন',
 'yourdomainname' => 'আপনার ডোমেইন',
@@ -515,12 +518,28 @@ $2',
 'userlogin-resetlink' => 'আপনার লগইনের বিস্তারিত তথ্যাদি ভুলে গেছেন?',
 'helplogin-url' => 'Help:প্রবেশ',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|লগইন সংক্রান্ত সাহায্য]]',
+'createacct-join' => 'আপনার সম্পর্কিত তথ্য নিচে যোগ করুন।',
+'createacct-emailrequired' => 'ইমেইল ঠিকানা',
+'createacct-emailoptional' => 'ইমেইল ঠিকানা (ঐচ্ছিক)',
+'createacct-email-ph' => 'আপনার ইমেইল ঠিকানা যোগ করুন',
 'createaccountmail' => 'একটি র‌্যান্ডম পাসওয়ার্ড নির্বাচন করুন এবং নিচের নির্ধারিত ইমেইল ঠিকানায় পাঠিয়ে দিন',
+'createacct-realname' => 'আসল নাম (ঐচ্ছিক)',
 'createaccountreason' => 'কারণ:',
+'createacct-reason' => 'কারণ',
+'createacct-reason-ph' => 'কেন আপনি আরেকটি অ্যাকাউন্ট তৈরি করছেন',
+'createacct-captcha' => 'নিরাপত্তা পরীক্ষা',
+'createacct-captcha-help-url' => '{{ns:Project}}:অ্যাকাউন্টের জন্য অনুরোধ',
+'createacct-imgcaptcha-ph' => 'উপরে যে লেখা দেখতে পাচ্ছেন তা লিখুন',
+'createacct-submit' => 'আপনার অ্যাকাউন্ট তৈরি করুন',
+'createacct-benefit-heading' => '{{SITENAME}} আপনার মত লোকেরই তৈরি।',
+'createacct-benefit-body1' => 'সম্পাদনাসমূহ',
+'createacct-benefit-body2' => 'পাতাসমূহ',
+'createacct-benefit-body3' => 'সাম্প্রতিক অবদানকারীগণ',
 'badretype' => "আপনার প্রবেশ করানো শব্দচাবি'টি মিলছেনা।",
 'userexists' => 'এই ব্যবহারকারী নামটি ইতমধ্যে ব্যবহার করা হয়েছে।
 অনুগ্রহ করে অন্য নাম বেছে নিন।',
 'loginerror' => 'লগ-ইন করতে সমস্যা হয়েছে',
+'createacct-error' => 'অ্যাকাউন্ট তৈরি ত্রুটি',
 'createaccounterror' => 'অ্যাকাউন্ট তৈরি হয়নি: $1',
 'nocookiesnew' => 'ব্যবহারকারীর অ্যাকাউন্টটি সৃষ্টি করা হয়েছে, কিন্তু আপনি এখনও অ্যাকাউন্টে প্রবেশ করেননি। {{SITENAME}}-তে কুকি ব্যবহার করে ব্যবহারকারীদের অ্যাকাউন্টে প্রবেশ করানো হয়। আপনার ব্রাউজারে কুকিগুলি নিষ্ক্রিয় করা আছে। অনুগ্রহ করে কুকিগুলি সক্রিয় করুন এবং আপনার নতুন ব্যবহারকারী নাম ও শব্দচাবি ব্যবহার করে অ্যাকাউন্টে প্রবেশ করুন।',
 'nocookieslogin' => '{{SITENAME}} এ কুকি (cookies) এর মাধ্যমে ব্যবহারকারীদের লগ-ইন সম্পন্ন করা হয়। আপনার ব্রাঊজারে কুকি বন্ধ করে দেওয়া আছে। কুকি চালু করে আবার চেষ্টা করুন।',
@@ -599,6 +618,7 @@ $2',
 'resetpass-wrong-oldpass' => 'ভুল অস্থায়ী অথবা বর্তমান শব্দচাবি।
 সম্ভবতঃ আপনি ইতোমধ্যেই সফলভাবে আপনার শব্দচাবিটি পরিবর্তন করেছেন অথবা একটি নতুন অস্থায়ী শব্দচাবির জন্য অনুরোধ করেছেন।',
 'resetpass-temp-password' => 'অস্থায়ী শব্দচাবি:',
+'resetpass-abort-generic' => 'শব্দচাবি পরিবর্তন একটি এক্সটেনশনের কারণে স্থগিত করা হয়েছে।',
 
 # Special:PasswordReset
 'passwordreset' => 'শব্দচাবি রিসেট',
@@ -1992,6 +2012,15 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 'listusers-noresult' => 'কোন ব্যবহারকারী খুঁজে পাওয়া যায়নি।',
 'listusers-blocked' => '(ব্লককৃত)',
 
+# Special:ActiveUsers
+'activeusers' => 'সক্রিয় ব্যবহারকারী তালিকা',
+'activeusers-intro' => 'এটি ব্যবহারকারী তালিকা যাদের $1 {{PLURAL:$1|দিনে|দিনে}} যেকোন কর্মকান্ড রয়েছে।',
+'activeusers-count' => 'গত {{PLURAL:$3|দিনে|$3 দিনে}} সর্বমোট {{PLURAL:$1|কর্মকাণ্ডের}} সংখ্যা $1',
+'activeusers-from' => 'ব্যবহারকারী দেখাও যাদের নাম এই অক্ষর দিয়ে শুরু:',
+'activeusers-hidebots' => 'বট লুকাও',
+'activeusers-hidesysops' => 'প্রশাসক লুকাও',
+'activeusers-noresult' => 'কোনো ব্যবহারকারী পাওয়া যায়নি।',
+
 # Special:ListGroupRights
 'listgrouprights' => 'দলগত ব্যবহারকারী অধিকার',
 'listgrouprights-summary' => 'এই উইকির ব্যবহারকারীদের একটি গ্রুপগুলোর তালিকা দেখানো হচ্ছে, সাথে গ্রুপের কার্যপরিধিও উল্লেখ করা হয়েছে।
@@ -2919,11 +2948,25 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 মিনিট|$1 মিনিট}}',
 'hours' => '{{PLURAL:$1|$1 ঘণ্টা|$1 ঘণ্টা}}',
 'days' => '{{PLURAL:$1|$1 দিন|$1 দিন}}',
+'weeks' => '{{PLURAL:$1|$1 সপ্তাহ|$1 সপ্তাহ}}',
 'months' => '{{PLURAL:$1|$1 মাস}}',
 'years' => '{{PLURAL:$1|$1 বছর}}',
 'ago' => '$1 আগে',
 'just-now' => 'এখনই',
 
+# Human-readable timestamps
+'hours-ago' => '$1 {{PLURAL:$1|ঘন্টা|ঘন্টা}} পূর্বে',
+'minutes-ago' => '$1 {{PLURAL:$1|মিনিট|মিনিট}} পূর্বে',
+'seconds-ago' => '$1 {{PLURAL:$1|সেকেন্ড|সেকেন্ড}} পূর্বে',
+'monday-at' => 'সোমবার, $1',
+'tuesday-at' => 'মঙ্গলবার, $1',
+'wednesday-at' => 'বুধবার, $1',
+'thursday-at' => 'বৃহস্পতিবার, $1',
+'friday-at' => 'শুক্রবার, $1',
+'saturday-at' => 'শনিবার, $1',
+'sunday-at' => 'রবিবার, $1',
+'yesterday-at' => 'গতকাল, $1',
+
 # Bad image list
 'bad_image_list' => 'ফরম্যাটটি এরকম:
 
@@ -3503,6 +3546,13 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'version-entrypoints-header-entrypoint' => 'শুরু',
 'version-entrypoints-header-url' => 'ইউআরএল',
 
+'redirect-submit' => 'যাও',
+'redirect-lookup' => 'দেখুন:',
+'redirect-value' => 'মান:',
+'redirect-user' => 'ব্যবহারকারী আইডি',
+'redirect-file' => 'ফাইলের নাম',
+'redirect-not-exists' => 'মান পাওয়া যায়নি',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'ডুপ্লিকেট ফাইলের জন্য অনুসন্ধান',
 'fileduplicatesearch-summary' => 'হ্যাশ ভ্যালুর ওর ভিত্তি করে একই ছবিগুলো খুঁজুন।',
@@ -3592,6 +3642,7 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'htmlform-selectorother-other' => 'অন্য',
 'htmlform-no' => 'না',
 'htmlform-yes' => 'হ্যাঁ',
+'htmlform-chosen-placeholder' => 'অপশন নির্বাচন করুন',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 সহ পূর্ণ টেক্সট সার্চ সমর্থন',
index d4c0e9e..2b2fbd0 100644 (file)
@@ -2109,6 +2109,15 @@ Rekis eo dezho un domani a-us da nebeutañ evel, da skouer, "*.org".<br />
 'listusers-noresult' => "N'eus bet kavet implijer ebet.",
 'listusers-blocked' => '(stanket)',
 
+# Special:ActiveUsers
+'activeusers' => 'Roll an implijerien oberiant',
+'activeusers-intro' => 'Setu aze ur roll eus an implijerien zo bet oberiant mui pe vui e-pad an $1 {{PLURAL:$1|deiz|deiz}} diwezhañ.',
+'activeusers-count' => '$1 {{PLURAL:$1|oberiadenn}} abaoe an {{PLURAL:$3|deiz|$3 deiz}} diwezhañ',
+'activeusers-from' => 'Diskouez an implijerien adal :',
+'activeusers-hidebots' => 'Kuzhat ar robotoù',
+'activeusers-hidesysops' => 'Kuzhat ar verourien',
+'activeusers-noresult' => "N'eus bet kavet implijer ebet.",
+
 # Special:ListGroupRights
 'listgrouprights' => 'Gwirioù ar strolladoù implijer',
 'listgrouprights-summary' => 'Da-heul ez eus ur roll eus ar strolladoù implijerien termenet war ar wiki-mañ, gant ar gwirioù moned stag outo.
diff --git a/languages/messages/MessagesBxr.php b/languages/messages/MessagesBxr.php
new file mode 100644 (file)
index 0000000..215061c
--- /dev/null
@@ -0,0 +1,13 @@
+<?php
+/** Buryat (Russia) (буряад)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ * @comment falls back to Russian
+ *
+ */
+
+$fallback = 'ru';
\ No newline at end of file
index c802e95..0df5336 100644 (file)
@@ -2131,6 +2131,15 @@ Es necessita com a mínim un domini de primer nivell, per exemple "*.org".<br />
 'listusers-noresult' => "No s'han trobat coincidències de noms d'usuaris. Si us plau, busqueu també amb variacions per majúscules i minúscules.",
 'listusers-blocked' => '({{GENDER:$1|blocat|blocada}})',
 
+# Special:ActiveUsers
+'activeusers' => "Llista d'usuaris actius",
+'activeusers-intro' => "Aquí hi ha una llista d'usuaris que han tingut algun tipus d'activitat en {{PLURAL:$1|el darrer dia|els darrers $1 dies}}.",
+'activeusers-count' => '$1 {{PLURAL:$1|modificació|modificacions}} en {{PLURAL:$3|el darrer dia|els $3 darrers dies}}',
+'activeusers-from' => 'Mostra els usuaris començant per:',
+'activeusers-hidebots' => 'Amaga bots',
+'activeusers-hidesysops' => 'Amaga administradors',
+'activeusers-noresult' => "No s'han trobat usuaris.",
+
 # Special:ListGroupRights
 'listgrouprights' => "Drets dels grups d'usuaris",
 'listgrouprights-summary' => "A continuació hi ha una llista dels grups d'usuaris definits en aquest wiki, així com dels seus drets d'accés associats.
index 0af4d90..cf800ca 100644 (file)
@@ -503,6 +503,7 @@ $1',
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Яззам',
 'nstab-user' => 'Декъашхо',
+'nstab-media' => 'Медиа агӀо',
 'nstab-special' => 'Белха агlо',
 'nstab-project' => 'Кхолламех',
 'nstab-image' => 'Файл',
@@ -532,15 +533,25 @@ $1',
 'badtitle' => 'Цамегаш йолу цlе',
 'badtitletext' => 'Дехарца йолу агlонан цlе нийса яц, йаьсса ю, хила мега нийса ца хlоттийна меттаюкъар йа юкъарвики цlе. Хила мега, цlарца цамагош йолу саберг.',
 'viewsource' => 'Хьажар',
-'protectedpagetext' => 'Хlара агlо дlакъойлина йу рé цадаккхийта.',
+'protectedpagetext' => 'ХӀара агӀо дӀакъойлина йу рé цадаккхийта.',
 'viewsourcetext' => 'Хьоьга далундерг хьажар а дезахь хlокху агlон чура йоза хьаэцар:',
-'protectedinterface' => 'Хlара схьгайтарна гlирса хаамаш латтош йолу агlо йу. Гlуо лелачаьрга гал ца яккхийта, оцун хийцам ба магийна дац.',
+'protectedinterface' => 'ХӀара схьгайтарна гӀирса хаамаш латтош йолу агӀо йу. ГӀуо лелачаьрга гал ца яккхийта, оцун хийцам ба магийна дац.',
+'exception-nologin' => 'Ахьа хӀой вовзийтина вац',
 
 # Login and logout pages
+'welcomeuser' => 'Марша ДогӀийла, $1!',
 'yourname' => 'Декъашхон цlе:',
+'userlogin-yourname' => 'Декъашхон цӀе',
+'userlogin-yourname-ph' => 'Язъе декъашхон цӀе',
 'yourpassword' => 'Ишар:',
+'userlogin-yourpassword' => 'Ишар',
+'userlogin-yourpassword-ph' => 'Язъе ишар',
+'createacct-yourpassword-ph' => 'Язъе ишар',
 'yourpasswordagain' => 'Юха язъйе ишар:',
+'createacct-yourpasswordagain' => 'Бакъе ишар',
+'createacct-yourpasswordagain-ph' => 'Кхин цкъа язъе ишар',
 'remembermypassword' => 'Даглаца сан дlавазвалар хlокху гlулкхдечу гlирса тlяхь (цхьан $1 {{PLURAL:$1|ден|динахь|динахь}})',
+'userlogin-remembermypassword' => 'Дагахь латт ве со',
 'yourdomainname' => 'Хьан машан меттиг:',
 'login' => 'Вовзийта хьой гlирсан',
 'nav-login-createaccount' => 'Вовзийта хьой / дlавазло',
@@ -804,6 +815,7 @@ $1',
 # User rights
 'userrights' => 'Декъашхочуьн бакъона урхалладар',
 'editinguser' => "Хийца декъашхочуьна бакъо '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-reason' => 'Бахьан:',
 
 # Groups
 'group' => 'Тоба:',
@@ -839,7 +851,7 @@ $1',
 'nchanges' => '$1 {{PLURAL:$1|хийцам|хийцамаш|хийцамаш}}',
 'recentchanges' => 'Керла нисдарш',
 'recentchanges-legend' => 'Гlирс нисбарна керла нисдарш',
-'recentchanges-summary' => 'Лахахьа гайтина хронологин къепехь тӀаьхьара бина хийцамаш Википедин агӀонашкахь',
+'recentchanges-summary' => 'Лахахь гайтина хене хьаьжна Википедин агӀонашкахь тӀаьхьара бина хийцамаш',
 'recentchanges-feed-description' => 'Тергам бе тlаьхьара вики хийцаман хlокху ларца.',
 'recentchanges-label-newpage' => 'Оцу нисдарца кхоллина керла агlо.',
 'recentchanges-label-minor' => 'Хlара нисдинарг къастийна жимо долушсан',
@@ -849,6 +861,7 @@ $1',
 'rcshowhidebots' => '$1 шабелхалой',
 'rcshowhideliu' => '$1 вовзитар долу декъашхой',
 'rcshowhideanons' => '$1 хьулбелларш',
+'rcshowhidepatr' => '$1 хьажжина нисдарш',
 'rcshowhidemine' => '$1 айхьа нисдинарш',
 'rclinks' => 'Гайта тlаьхьара $1 хийцамаш оцу $2 ден<br />$3',
 'diff' => 'тейп тайпнара',
@@ -1062,6 +1075,10 @@ PICT # тайп тайпан
 # Special:ListUsers
 'listusers-submit' => 'Гайта',
 
+# Special:ActiveUsers
+'activeusers' => 'Жигар декъашхой могlам',
+'activeusers-from' => 'ТӀера волавелла декъашхой гайта',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Декъашхойн тобанаши бакъонаш',
 'listgrouprights-group' => 'Тоба',
@@ -1149,10 +1166,18 @@ PICT # тайп тайпан
 
 # Undelete
 'undelete' => 'ДIайайина йолу агIонашка хьажар',
+'undeletepage' => 'ДӀаяхина агӀонашка хьажар а меттахӀоттар а',
+'undeletepagetitle' => "'''Лахахь гайтина хӀокху [[:$1]] агӀона дӀаяхина версеш'''.",
 'viewdeletedpage' => 'ДIайайина йолу агIонашка хьажар',
+'undelete-fieldset-title' => 'МеттахӀоттае версеш',
 'undeleterevdel' => 'Метта хlоттор хира дац, нагахь иза дакъошкахь дlадайина далахь а тlаьххьара кисак башхо йа хlума.
 Иштнарг хилча ахьа дlабаккха беза хlоттийна болу къастам йа хьагайта тlаьххьара дlайайина башхо.',
+'undeletebtn' => 'МеттахӀоттае',
 'undeletelink' => 'хьажа/метта хlоттаде',
+'undeleteinvert' => 'Къастае массо',
+'undeletecomment' => 'Бахьан:',
+'undeletedrevisions' => '$1 {{PLURAL:$1|хийцамаш|хийцамаш|хийцамаш}} меттахӀоттайина',
+'undeletedfiles' => '$1 {{PLURAL:$1|файл меттахӀоттайина|файлаш меттахӀоттайина|файлаш меттахӀоттайина}}',
 'undelete-search-submit' => 'Лаха',
 
 # Namespace form on various pages
@@ -1366,6 +1391,9 @@ PICT # тайп тайпан
 # Spam protection
 'spamprotectiontitle' => 'Совбиларна литтар',
 
+# Info page
+'pageinfo-toolboxlink' => 'Агlонах болу бовзам',
+
 # Browsing diffs
 'previousdiff' => '← Хьалхдоьда нисдинарг',
 'nextdiff' => 'Тlяхьа догlа нисдинарг →',
@@ -1509,6 +1537,8 @@ PICT # тайп тайпан
 'dberr-outofdate' => 'Хьуна хаалахь, цуьна йолу меттиг хила мега тишйелла черахь.',
 
 # New logging system
+'logentry-delete-delete' => '$1 {{GENDER:$2|дӀаякхина|дӀаякхина}} агӀо $3',
+'logentry-delete-restore' => '$1 {{GENDER:$2|меттахӀоттайина|меттахӀоттайина}} агӀо $3',
 'logentry-move-move' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4',
 
 );
index b8c7989..c0fdfcf 100644 (file)
@@ -785,7 +785,7 @@ Nezapomeňte si upravit své [[Special:Preferences|nastavení {{grammar:2sg|{{SI
 'createacct-yourpasswordagain' => 'Potvrzení hesla',
 'createacct-yourpasswordagain-ph' => 'Zadejte heslo ještě jednou',
 'remembermypassword' => 'Zapamatovat si mé přihlášení na tomto počítači (maximálně $1 {{PLURAL:$1|den|dny|dní}})',
-'userlogin-remembermypassword' => 'Zapamatovat si mě',
+'userlogin-remembermypassword' => 'Přihlásit trvale',
 'userlogin-signwithsecure' => 'Přihlášení na zabezpečený server',
 'securelogin-stick-https' => 'Zůstat po přihlášení připojen přes HTTPS',
 'yourdomainname' => 'Vaše doména',
@@ -817,10 +817,12 @@ Nezapomeňte si upravit své [[Special:Preferences|nastavení {{grammar:2sg|{{SI
 'createacct-realname' => 'Skutečné jméno (nepovinné)',
 'createaccountreason' => 'Důvod:',
 'createacct-reason' => 'Důvod',
+'createacct-reason-ph' => 'Proč si vytváříte další účet',
 'createacct-captcha' => 'Bezpečnostní kontrola',
 'createacct-captcha-help-url' => '{{ns:Project}}:Žádost o účet',
 'createacct-imgcaptcha-help' => 'Nevidíte obrázek? [[{{MediaWiki:createacct-captcha-help-url}}|Požádejte o účet]]',
 'createacct-imgcaptcha-ph' => 'Opište výše zobrazený text',
+'createacct-submit' => 'Vytvořit účet',
 'createacct-benefit-heading' => '{{grammar:4sg|{{SITENAME}}}} tvoří lidé jako vy.',
 'createacct-benefit-body1' => '{{PLURAL:{{NUMBEROFEDITS:R}}|editace|editace|editací}}',
 'createacct-benefit-body2' => '{{PLURAL:{{NUMBEROFARTICLES:R}}|stránka|stránky|stránek}}',
@@ -1585,6 +1587,7 @@ Vaše adresa v takovém případě není prozrazena.',
 'userrights-notallowed' => 'Váš účet nemá oprávnění měnit uživatelská práva.',
 'userrights-changeable-col' => 'Skupiny, které můžete měnit',
 'userrights-unchangeable-col' => 'Skupiny, které nemůžete měnit',
+'userrights-conflict' => 'Konflikt uživatelských práv! Proveďte požadované změny ještě jednou.',
 
 # Groups
 'group' => 'Skupina:',
@@ -2314,6 +2317,15 @@ Povinná je přinejmenším doména nejvyššího řádu, např. „*.org“.<br
 'listusers-noresult' => 'Nenalezen žádný uživatel.',
 'listusers-blocked' => '({{GENDER:$1|zablokován|zablokována|zablokován}})',
 
+# Special:ActiveUsers
+'activeusers' => 'Seznam aktivních uživatelů',
+'activeusers-intro' => 'Toto je seznam uživatelů, kteří byli nějak aktivní v {{plural:$1|posledním dni|posledních $1 dnech}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|akce|akce|akcí}} během {{PLURAL:$3|posledního dne|posledních $3 dnů}}',
+'activeusers-from' => 'Zobrazit uživatele počínaje od:',
+'activeusers-hidebots' => 'Skrýt roboty',
+'activeusers-hidesysops' => 'Skrýt správce',
+'activeusers-noresult' => 'Nenalezen žádný uživatel.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Práva skupin uživatelů',
 'listgrouprights-summary' => 'Toto je seznam uživatelských skupin definovaných na této wiki a&nbsp;jejich přístupových práv.
index eb8d5dd..a86eacb 100644 (file)
@@ -571,8 +571,8 @@ Sylwer y bydd rhai tudalennau yn parhau i ymddangos fel ag yr oeddent pan oeddec
 'createacct-reason' => 'Rheswm',
 'createacct-reason-ph' => 'Pam ydych yn creu cyfrif arall?',
 'createacct-captcha' => 'Gwiriad diogelwch',
-'createacct-captcha-help-url' => '{{ns:Project}}:Ymholi am gyfri',
-'createacct-imgcaptcha-help' => 'Methu gweld y ddelwedd? [[{{MediaWiki:createacct-captcha-help-url}}|Holwch am gyfrif]]',
+'createacct-captcha-help-url' => '{{ns:Project}}:Gwneud cais am gyfri',
+'createacct-imgcaptcha-help' => 'Methu gweld y ddelwedd? [[{{MediaWiki:createacct-captcha-help-url}}|Gwnewch gais am gyfrif]]',
 'createacct-imgcaptcha-ph' => 'Nodwch y testun a welwch uchod',
 'createacct-submit' => 'Crëwch gyfrif',
 'createacct-benefit-heading' => 'Mae {{SITENAME}} yn cael ei greu gan bobl fel chi.',
@@ -2060,6 +2060,15 @@ Mae angen parth lefel-uchaf o leiaf, er enghraifft "*.org".<br />
 'listusers-noresult' => "Dim defnyddiwr i'w gael.",
 'listusers-blocked' => '(wedi ei flocio)',
 
+# Special:ActiveUsers
+'activeusers' => 'Rhestr defnyddwyr gweithgar',
+'activeusers-intro' => 'Dyma restr y defnyddwyr a fuont yn weithgar o fewn y {{PLURAL:$1|diwrnod|diwrnod|deuddydd|tridiau|$1 diwrnod|$1 diwrnod}} diwethaf.',
+'activeusers-count' => '$1 {{PLURAL:$1|golygiad|golygiad|olygiad|golygiad}} yn ystod y {{PLURAL:$3|diwrnod|diwrnod|deuddydd|tridiau|$3 diwrnod}} diwethaf',
+'activeusers-from' => "Rhestru'r defnyddwyr gan ddechrau gyda:",
+'activeusers-hidebots' => 'Cuddio botiau',
+'activeusers-hidesysops' => 'Cuddio gweinyddwyr',
+'activeusers-noresult' => "Dim defnyddwyr i'w cael.",
+
 # Special:ListGroupRights
 'listgrouprights' => 'Galluoedd grwpiau defnyddwyr',
 'listgrouprights-summary' => "Dyma restr o'r grwpiau defnyddwyr sydd i'w cael ar y wici hon, ynghyd â galluoedd aelodau'r gwahanol grwpiau. Cewch wybodaeth pellach am y gwahanol alluoedd ar y [[{{MediaWiki:Listgrouprights-helppage}}|dudalen gymorth]].",
@@ -3024,9 +3033,9 @@ Mae'n bosib y bydd eich cyfrifiadur yn cael ei danseilio wrth ddefnyddio'r ffeil
 'just-now' => 'nawr',
 
 # Human-readable timestamps
-'hours-ago' => '$1 {{PLURAL:$1|awr|awr}} yn ôl',
-'minutes-ago' => '$1 {{PLURAL:$1|munud|munud}} yn ôl',
-'seconds-ago' => '$1 {{PLURAL:$1|eiliad|eiliad}} yn ôl',
+'hours-ago' => '$1 {{PLURAL:$1|awr}} yn ôl',
+'minutes-ago' => '$1 {{PLURAL:$1|munud|munud|funud|munud}} yn ôl',
+'seconds-ago' => '$1 {{PLURAL:$1|eiliad}} yn ôl',
 'monday-at' => 'Dydd Llun am $1',
 'tuesday-at' => 'Dydd Mawrth am $1',
 'wednesday-at' => 'Dydd Mercher am $1',
index c8e30c5..e4cb551 100644 (file)
@@ -604,10 +604,15 @@ Glem ikke at ændre dine [[Special:Preferences|{{SITENAME}} indstillinger]].',
 'yourname' => 'Dit brugernavn:',
 'userlogin-yourname' => 'Brugernavn',
 'userlogin-yourname-ph' => 'Indtast dit brugernavn',
+'createacct-helpusername-url' => '{{ns:Project}}:Brugernavnsregler',
+'createacct-helpusername-link' => '[[{{MediaWiki:createacct-helpusername-url}}|(hjælp mig med at vælge)]]',
 'yourpassword' => 'Din adgangskode:',
 'userlogin-yourpassword' => 'Adgangskode',
 'userlogin-yourpassword-ph' => 'Indtast din adgangskode',
+'createacct-yourpassword-ph' => 'Indtast kodeord',
 'yourpasswordagain' => 'Gentag adgangskode',
+'createacct-yourpasswordagain' => 'Bekræft kodeord',
+'createacct-yourpasswordagain-ph' => 'Indtast kodeord igen',
 'remembermypassword' => 'Husk mit brugernavn i denne browser (højst $1 {{PLURAL:$1|dag|dage}})',
 'userlogin-remembermypassword' => 'Husk mig',
 'userlogin-signwithsecure' => 'Log på med sikker server',
@@ -633,12 +638,29 @@ Glem ikke at ændre dine [[Special:Preferences|{{SITENAME}} indstillinger]].',
 'userlogin-resetlink' => 'Har du glemt dine login oplysninger?',
 'helplogin-url' => 'Help:Logge på',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hjælp til at logge på]]',
+'createacct-join' => 'Indtast dine oplysninger nedenfor.',
+'createacct-emailrequired' => 'Mailadresse',
+'createacct-emailoptional' => 'Mailadresse (valgfri)',
+'createacct-email-ph' => 'Indtast din mailadresse',
 'createaccountmail' => 'Brug en midlertidig tilfældig adgangskode og send den til e-mailadressen angivet nedenfor',
+'createacct-realname' => 'Dit rigtige navn',
 'createaccountreason' => 'Begrundelse:',
+'createacct-reason' => 'Årsag',
+'createacct-reason-ph' => 'Hvorfor vil du oprette endnu en konto',
+'createacct-captcha' => 'Sikkerhedskontrol',
+'createacct-captcha-help-url' => '{{ns:Project}}:Anmodning om konto',
+'createacct-imgcaptcha-help' => 'Billede ej tilgængeligt [[{{MediaWiki:createacct-captcha-help-url}}|Opret konto]]',
+'createacct-imgcaptcha-ph' => 'Indtast venligst ovenstående tekst',
+'createacct-submit' => 'Opret din konto',
+'createacct-benefit-heading' => '{{SITENAME}} laves af mennesker som dig.',
+'createacct-benefit-body1' => 'rettelser',
+'createacct-benefit-body2' => 'sider',
+'createacct-benefit-body3' => 'seneste bidragydere',
 'badretype' => 'De indtastede adgangskoder er ikke ens.',
 'userexists' => 'Det brugernavn, du har valgt, er allerede i brug.
 Vælg venligst et andet brugernavn.',
 'loginerror' => 'Logon mislykket',
+'createacct-error' => 'Fejl ved kontooprettelse',
 'createaccounterror' => 'Kunne ikke oprette brugerkonto: $1',
 'nocookiesnew' => 'Din brugerkonto er nu oprettet, men du er ikke logget på. {{SITENAME}} bruger cookies til at logge brugere på. Du har slået cookies fra. Vær venlig at slå cookies til, og derefter kan du logge på med dit nye brugernavn og kodeord.',
 'nocookieslogin' => '{{SITENAME}} bruger cookies til at logge brugere på. Du har slået cookies fra. Slå dem venligst til og prøv igen.',
@@ -724,6 +746,7 @@ Vent venligst før du prøver igen.',
 'resetpass-wrong-oldpass' => 'Ugyldig midlertidig eller gældende adgangskode.
 Du har muligvis allerede skiftet din adgangskode eller anmodet om en ny midlertidig kode.',
 'resetpass-temp-password' => 'Midlertidig adgangskode',
+'resetpass-abort-generic' => 'Ændring af kodeord er blevet afbrudt af udvidelse',
 
 # Special:PasswordReset
 'passwordreset' => 'Nulstil adgangskode',
@@ -754,7 +777,7 @@ Du bør logge på og vælge en ny adgangskode nu. Hvis en anden end dig har gjor
 Midlertidig adgangskode: $2',
 'passwordreset-emailsent' => 'En e-mail om nulstilling af adgangskode er blevet sendt.',
 'passwordreset-emailsent-capture' => 'En e-mail om nulstilling af adgangskode, som vist nedenfor, er blevet sendt.',
-'passwordreset-emailerror-capture' => 'En e-mail om nulstilling af adgangskode, som vist nedenfor, blev genereret, men det lykkedes ikke at sende den til brugeren: $1',
+'passwordreset-emailerror-capture' => 'En mail om nulstilling af adgangskode, som vist nedenfor, blev genereret, men det lykkedes ikke at sende den til {{GENDER:$2|bruger}}: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'Ændr email-adresse',
@@ -1394,6 +1417,7 @@ Hvis du vælger at oplyse dit navn, vil det blive brugt til at tilskrive dig dit
 'userrights-notallowed' => 'Din konto har ikke adgang til at tilføje eller fjerne brugerrettigheder.',
 'userrights-changeable-col' => 'Redigerbare grupper',
 'userrights-unchangeable-col' => 'Uredigerbare grupper',
+'userrights-conflict' => 'Brugerrettighedskonflikt. Tilføj venligst dine ændringer påny.',
 
 # Groups
 'group' => 'Gruppe:',
@@ -2126,6 +2150,15 @@ Der skal som minimum angives et topniveau-domæne som f. eks. "*.org".<br />
 'listusers-noresult' => 'Ingen bruger fundet.',
 'listusers-blocked' => '(blokeret)',
 
+# Special:ActiveUsers
+'activeusers' => 'Liste over aktive brugere',
+'activeusers-intro' => 'Dette er en liste over brugere, som har haft en eller anden form for aktivitet inden for {{PLURAL:$1|den|de}} seneste {{PLURAL:$1|dag|$1 dage}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|handling|handlinger}} i {{PLURAL:$3|det seneste døgn|de seneste $3 dage}}',
+'activeusers-from' => 'Vis brugere som starter med:',
+'activeusers-hidebots' => 'Skjul robotter',
+'activeusers-hidesysops' => 'Skjul administratorer',
+'activeusers-noresult' => 'Ingen brugere fundet.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Brugergrupperettigheder',
 'listgrouprights-summary' => 'Denne side viser de brugergrupper der er defineret på denne wiki og de enkelte gruppers rettigheder.
@@ -3077,11 +3110,25 @@ Du kan beskadige dit system hvis du udfører den.",
 'minutes' => '{{PLURAL: $1|$1 minut|$1 minutter}}',
 'hours' => '{{PLURAL: $1|$1 time|$1 timer}}',
 'days' => '{{PLURAL: $1|$1 dag|$1 dage}}',
+'weeks' => '{{PLURAL:$1|$1 uge|$1 uger}}',
 'months' => '{{PLURAL:$1|$1 måned|$1 måneder}}',
 'years' => '{{PLURAL:$1|$1 år}}',
 'ago' => '$1 siden',
 'just-now' => 'lige nu',
 
+# Human-readable timestamps
+'hours-ago' => '$1 {{PLURAL:$1|time|timer}} siden',
+'minutes-ago' => '$1 {{PLURAL:$1|minut|minutter}} siden',
+'seconds-ago' => '$1 {{PLURAL:$1|sekund|sekunder}} siden',
+'monday-at' => 'Mandag kl. $1',
+'tuesday-at' => 'Tirsdag kl. $1',
+'wednesday-at' => 'Onsdag  kl. $1',
+'thursday-at' => 'Torsdag kl. $1',
+'friday-at' => 'Fredag kl. $1',
+'saturday-at' => 'Lørdag kl. $1',
+'sunday-at' => 'Søndag kl. $1',
+'yesterday-at' => 'Igår kl. $1',
+
 # Bad image list
 'bad_image_list' => 'Formatet er:
 
@@ -3693,6 +3740,17 @@ Du skulle have modtaget [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi af GNU General
 'version-entrypoints-header-entrypoint' => 'Indgangspunkt',
 'version-entrypoints-header-url' => 'URL',
 
+'redirect' => 'Omdirigering pga. fil, bruger eller udgave ID',
+'redirect-legend' => 'Omstilling til en fil eller en side',
+'redirect-summary' => "Denne side omdirigerer en (hvis filnavnet er angivet), en side (hvis udgave ID'et er angivet) eller en brugerside (hvis et numerisk brugernummer er angivet).",
+'redirect-submit' => 'Kør',
+'redirect-lookup' => 'Slå op:',
+'redirect-value' => 'Værdi:',
+'redirect-user' => 'Bruger ID',
+'redirect-revision' => 'Sideversion',
+'redirect-file' => 'Filnavn',
+'redirect-not-exists' => 'Værdi ej fundet',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Find dubletfiler',
 'fileduplicatesearch-summary' => 'Find dublerede filer baseret på deres hash-værdi.',
@@ -3783,6 +3841,7 @@ Du skulle have modtaget [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi af GNU General
 'htmlform-selectorother-other' => 'Anden',
 'htmlform-no' => 'Nej',
 'htmlform-yes' => 'Ja',
+'htmlform-chosen-placeholder' => 'Vælg en mulighed',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 med fuld-tekst søgnings support',
index 89d97a4..259ee7a 100644 (file)
@@ -827,7 +827,7 @@ Vergiss nicht, deine [[Special:Preferences|{{SITENAME}}-Einstellungen]] zu ände
 'userlogin-yourname' => 'Benutzername',
 'userlogin-yourname-ph' => 'Gib deinen Benutzernamen ein',
 'createacct-helpusername-url' => '{{ns:Project}}:Benutzernamensrichtlinie',
-'createacct-helpusername-link' => '[[{{MediaWiki:createacct-helpusername-url}}|(hilf mir bei der Auswahl)]]',
+'createacct-helpusername-link' => '[[{{MediaWiki:createacct-helpusername-url}}|(Auswahlhilfe)]]',
 'yourpassword' => 'Passwort:',
 'userlogin-yourpassword' => 'Passwort',
 'userlogin-yourpassword-ph' => 'Gib dein Passwort ein',
@@ -2372,6 +2372,15 @@ Siehe auch die Liste der [[Special:WantedCategories|gewünschten Kategorien]].',
 'listusers-noresult' => 'Keinen Benutzer gefunden.',
 'listusers-blocked' => '(gesperrt)',
 
+# Special:ActiveUsers
+'activeusers' => 'Aktive Benutzer',
+'activeusers-intro' => 'Dies ist eine Liste von Benutzern, die innerhalb {{PLURAL:$1|des letzten Tages|der letzten $1 Tage}} Aktivitäten aufwiesen.',
+'activeusers-count' => '$1 {{PLURAL:$1|Aktion|Aktionen}} in den {{PLURAL:$3|letzten 24 Stunden|vergangenen $3 Tagen}}',
+'activeusers-from' => 'Zeige Benutzer ab:',
+'activeusers-hidebots' => 'Bots ausblenden',
+'activeusers-hidesysops' => 'Administratoren ausblenden',
+'activeusers-noresult' => 'Keine Benutzer gefunden.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Benutzergruppenrechte',
 'listgrouprights-summary' => 'Dies ist eine Liste der in diesem Wiki definierten Benutzergruppen und der damit verbundenen Rechte.
index 093d43e..a9dc302 100644 (file)
@@ -2268,6 +2268,15 @@ Qeydeyê destegbiyayey: <code>$1</code> (qet yew qeydeyo hesabiyaye http:// ke n
 'listusers-noresult' => 'karber nêdiyayo/a.',
 'listusers-blocked' => '(blok biy)',
 
+# Special:ActiveUsers
+'activeusers' => 'Listey karberan de aktivan',
+'activeusers-intro' => 'Ena yew listeya karberê ke $1 {{PLURAL:$1|roc|rocan}} ra tepya iştiraq kerdo ênan mocneno.',
+'activeusers-count' => 'Karberi {{PLURAL:$3|roce peyni de|$3 roca peyni de}} $1 {{PLURAL:$1|vurnayış|vurnayışi}} kerdê',
+'activeusers-from' => 'Enê karberi ra tepya bımocne:',
+'activeusers-hidebots' => 'Botan bınımne',
+'activeusers-hidesysops' => 'İdarekerdoğan bınımne',
+'activeusers-noresult' => 'Karberi nêdiyayê.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'heqê grubê karberi',
 'listgrouprights-summary' => 'wikiya cêrın a ke tede grubê karberi nişane biyê, listeya heqê cıresayişê inan o.
index 1ffb37a..9868071 100644 (file)
@@ -2274,6 +2274,15 @@ $1',
 'listusers-noresult' => 'Δεν βρέθηκε χρήστης.',
 'listusers-blocked' => '(υπό φραγή)',
 
+# Special:ActiveUsers
+'activeusers' => 'Κατάλογος ενεργών χρηστών',
+'activeusers-intro' => 'Αυτή είναι μια λίστα από χρήστες που είχαν κάποιου είδους δραστηριότητα {{PLURAL:$1|την τελευταία $1 μέρα|τις τελευταίες $1 μέρες}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|ενέργεια|ενέργειες}} {{PLURAL:$3|την τελευταία μέρα|τις τελευταίες $3 μέρες}}',
+'activeusers-from' => 'Προβολή χρηστών ξεκινώντας από:',
+'activeusers-hidebots' => 'Απόκρυψη bots',
+'activeusers-hidesysops' => 'Απόκρυψη διαχειριστών',
+'activeusers-noresult' => 'Δεν βρέθηκε χρήστης.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Δικαιώματα ομάδων χρηστών',
 'listgrouprights-summary' => 'Ακόλουθεί μία λίστα με τις ομάδες χρηστών σε αυτό το wiki καθώς και με τα δικαιώματα πρόσβασης αυτών.
index e6f7338..93e9746 100644 (file)
@@ -1135,13 +1135,13 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
 'createacct-benefit-heading'      => '{{SITENAME}} is made by people like you.',
 'createacct-benefit-icon1'        => 'icon-edits',
 'createacct-benefit-head1'        => '{{NUMBEROFEDITS}}',
-'createacct-benefit-body1'        => 'edits',
+'createacct-benefit-body1'        => '{{PLURAL:$1|edit|edits}}',
 'createacct-benefit-icon2'        => 'icon-pages',
 'createacct-benefit-head2'        => '{{NUMBEROFARTICLES}}',
-'createacct-benefit-body2'        => 'pages',
+'createacct-benefit-body2'        => '{{PLURAL:$1|page|pages}}',
 'createacct-benefit-icon3'        => 'icon-contributors',
 'createacct-benefit-head3'        => '{{NUMBEROFACTIVEUSERS}}',
-'createacct-benefit-body3'        => 'recent contributors',
+'createacct-benefit-body3'        => 'recent {{PLURAL:$1|contributor|contributors}}',
 'badretype'                    => 'The passwords you entered do not match.',
 'userexists'                   => 'Username entered already in use.
 Please choose a different name.',
index dc63523..68c59ec 100644 (file)
@@ -737,7 +737,7 @@ Ne forgesu ŝanĝi viajn [[Special:Preferences|{{SITENAME}}-preferojn]]',
 'userlogin-yourpassword-ph' => 'Enigu vian pasvorton',
 'yourpasswordagain' => 'Retajpu pasvorton',
 'remembermypassword' => 'Memori mian ensalutadon ĉe ĉi tiu komputilo (daŭrante maksimume $1 {{PLURAL:$1|tagon|tagojn}})',
-'userlogin-remembermypassword' => 'Memoru min',
+'userlogin-remembermypassword' => 'Memoru mian ensaluton',
 'securelogin-stick-https' => 'Resti konektita al HTTPS post ensalutado',
 'yourdomainname' => 'Via domajno',
 'password-change-forbidden' => 'Ve ne povas ŝanĝi pasvortojn en ĉi tiu vikio.',
@@ -2253,6 +2253,15 @@ Subtenataj {{PLURAL:$2|protokolo|protokoloj}}:: <code>$1</code> (ne aldonu ĉi t
 'listusers-noresult' => 'Neniu uzanto trovita.',
 'listusers-blocked' => '(forbarita)',
 
+# Special:ActiveUsers
+'activeusers' => 'Listo de aktivaj uzantoj',
+'activeusers-intro' => 'Jen listo de uzantoj kiu faris iom da agoj dum la lastaj $1 {{PLURAL:$1|tago|tagoj}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|redakto|redaktoj}} dum la {{PLURAL:$3|lasta tago|lastaj $3 tagoj}}',
+'activeusers-from' => 'Montri uzantojn ekde:',
+'activeusers-hidebots' => 'kaŝi robotojn',
+'activeusers-hidesysops' => 'Kaŝi administrantojn',
+'activeusers-noresult' => 'Neniuj uzantoj trovitaj.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Gruprajtoj de uzantoj',
 'listgrouprights-summary' => 'Jen listo de uzanto-grupoj difinitaj en ĉi tiu vikio, kun ties asociaj atingrajtoj.
index 52ec0e0..8a1fe4d 100644 (file)
@@ -44,6 +44,7 @@
  * @author Fortega
  * @author Gustronico
  * @author Gwickwire
+ * @author Hahc21
  * @author Hazard-SJ
  * @author Hercule
  * @author Icvav
@@ -2344,6 +2345,15 @@ Es necesario, por lo menos, un dominio de alto nivel, por ejemplo "*.org".<br />
 'listusers-noresult' => 'No se encontró al usuario.',
 'listusers-blocked' => '({{GENDER:$1|bloqueado|bloqueada}})',
 
+# Special:ActiveUsers
+'activeusers' => 'Lista de usuarios activos',
+'activeusers-intro' => 'Esta es una lista de usuarios que han tenido alguna actividad en los últimos $1 {{PLURAL:$1|día|días}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|acción|acciones}} en los últimos {{PLURAL:$3|día|$3 días}}',
+'activeusers-from' => 'Mostrando a los usuarios empezando por:',
+'activeusers-hidebots' => 'Ocultar robots',
+'activeusers-hidesysops' => 'Ocultar administradores',
+'activeusers-noresult' => 'No se encontraron usuarios.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Permisos del grupo de usuarios',
 'listgrouprights-summary' => 'La siguiente es una lista de los grupos de usuario definidos en esta wiki y de sus privilegios de acceso asociados.
@@ -4072,12 +4082,12 @@ Este sitio está experimentando dificultades técnicas.',
 'logentry-delete-event' => '$1 {{GENDER:$2|modificó}} la visibilidad de {{PLURAL:$5|un evento|$5 eventos}} del registro en $3: $4',
 'logentry-delete-revision' => '$1 modificó la visibilidad de {{PLURAL:$5|una edición|$5 ediciones}} en la página $3: $4',
 'logentry-delete-event-legacy' => '$1 modificó la visibilidad de los eventos del registro en $3',
-'logentry-delete-revision-legacy' => '$1 modificó la visibilidad de las ediciones en la página $3',
+'logentry-delete-revision-legacy' => '$1 modificó la visibilidad de varias ediciones en la página $3',
 'logentry-suppress-delete' => '$1 {{GENDER:$2|borró}}, con restricciones para administradores aplicadas, la página $3',
 'logentry-suppress-event' => '$1 modificó secretamente la visibilidad de {{PLURAL:$5|un evento del registro|$5 eventos del registro}} en $3: $4',
 'logentry-suppress-revision' => '$1 modificó secretamente la visibilidad de {{PLURAL:$5|una edición|$5 ediciones}} en la página $3: $4',
 'logentry-suppress-event-legacy' => '$1 modificó secretamente la visibilidad de los eventos del registro en $3',
-'logentry-suppress-revision-legacy' => '$1 modificó secretamente la visibilidad de las ediciones en la página $3',
+'logentry-suppress-revision-legacy' => '$1 modificó secretamente la visibilidad de varias ediciones en la página $3',
 'revdelete-content-hid' => 'contenido ocultado',
 'revdelete-summary-hid' => 'resumen de edición oculto',
 'revdelete-uname-hid' => 'nombre de usuario ocultado',
@@ -4089,16 +4099,16 @@ Este sitio está experimentando dificultades técnicas.',
 'logentry-move-move' => '$1 movió la página $3 a $4',
 'logentry-move-move-noredirect' => '$1 movió la página $3 a $4 sin dejar una redirección',
 'logentry-move-move_redir' => '$1 movió la página $3 a $4 sobre una redirección',
-'logentry-move-move_redir-noredirect' => '$1 movió la página $3 a $4 sobre una redirección, sin dejar redirección',
-'logentry-patrol-patrol' => '$1 marcó la edición $4 de la página $3 como patrullada',
+'logentry-move-move_redir-noredirect' => '$1 movió la página $3 a $4 sobre una redirección y sin dejar una redirección',
+'logentry-patrol-patrol' => '$1 marcó como patrullada la edición $4 de la página $3',
 'logentry-patrol-patrol-auto' => '$1 marcó automáticamente la edición $4 de la página $3 como patrullada',
-'logentry-newusers-newusers' => 'Se ha creado la cuenta de usuario $1',
-'logentry-newusers-create' => 'Se ha creado la cuenta de usuario $1',
-'logentry-newusers-create2' => '$1 ha creado la cuenta de usuario $3',
-'logentry-newusers-byemail' => '$1 creó la cuenta de usuario $3 y la contraseña se envió por correo electrónico',
+'logentry-newusers-newusers' => 'La cuenta de usuario $1 ha sido creada',
+'logentry-newusers-create' => 'La cuenta de usuario $1 ha sido creada',
+'logentry-newusers-create2' => 'La cuenta de usuario $3 ha sido creada por $1',
+'logentry-newusers-byemail' => 'la cuenta de usuario $3 ha sido creada por $1 y la contraseña ha sido enviada por correo',
 'logentry-newusers-autocreate' => 'La cuenta $1 fue creada automáticamente',
 'logentry-rights-rights' => '$1 modificó los grupos a los que pertenece $3: de $4 a $5',
-'logentry-rights-rights-legacy' => '$1 ha cambiado la pertenencia a grupos de $3',
+'logentry-rights-rights-legacy' => '$1 modificó los grupos a los que pertenece $3',
 'logentry-rights-autopromote' => '$1 ha sido {{GENDER:$2|promocionado|promocionada}} automáticamente de $4 a $5',
 'rightsnone' => '(ninguno)',
 
index 8506d00..c3a4a69 100644 (file)
@@ -2224,6 +2224,15 @@ Toetatud {{PLURAL:$2|protokoll|protokollid}}: <code>$1</code> (määramata proto
 'listusers-noresult' => 'Kasutajat ei leitud.',
 'listusers-blocked' => '(blokeeritud)',
 
+# Special:ActiveUsers
+'activeusers' => 'Aktiivsete kasutajate nimekiri',
+'activeusers-intro' => 'See on loetelu kasutajatest, kes on viimase $1 {{PLURAL:$1|päev|päeva}} jooksul midagi teinud.',
+'activeusers-count' => '$1 {{PLURAL:$1|toiming|toimingut}} viimase {{PLURAL:$3|päeva|$3 päeva}} jooksul',
+'activeusers-from' => 'Näita kasutajaid alates:',
+'activeusers-hidebots' => 'Peida robotid',
+'activeusers-hidesysops' => 'Peida administraatorid',
+'activeusers-noresult' => 'Kasutajaid ei leidunud.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Kasutajarühma õigused',
 'listgrouprights-summary' => 'Siin on loetletud selle viki kasutajarühmad ja rühmaga seotud õigused.
index 33b3b3c..848e4e1 100644 (file)
@@ -2226,6 +2226,15 @@ Vaaditaan vähintään ylätason verkkotunnus, esimerkiksi "*.org".<br />
 'listusers-noresult' => 'Käyttäjiä ei löytynyt.',
 'listusers-blocked' => '(estetty)',
 
+# Special:ActiveUsers
+'activeusers' => 'Aktiivisten käyttäjien lista',
+'activeusers-intro' => 'Tämä on luettelo käyttäjistä, jotka ovat tehneet jotain viimeisen $1 {{PLURAL:$1|päivän}} sisällä.',
+'activeusers-count' => '$1 {{PLURAL:$1|toiminto|toimintoa}} viimeisen {{PLURAL:$3|päivän|$3 päivän}} aikana',
+'activeusers-from' => 'Näytä käyttäjät alkaen',
+'activeusers-hidebots' => 'Piilota botit',
+'activeusers-hidesysops' => 'Piilota ylläpitäjät',
+'activeusers-noresult' => 'Käyttäjiä ei löytynyt.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Käyttäjäryhmien oikeudet',
 'listgrouprights-summary' => 'Tämä lista sisältää tämän wikin käyttäjäryhmät sekä ryhmiin liitetyt käyttöoikeudet.
index 9fb628c..e6df159 100644 (file)
@@ -1820,6 +1820,11 @@ Sí eisini [[Special:WantedCategories|ynsktir bólkar]].',
 'listusers-submit' => 'Sýna',
 'listusers-noresult' => 'Ongin brúkari var funnin.',
 
+# Special:ActiveUsers
+'activeusers-hidebots' => 'Fjal bottar',
+'activeusers-hidesysops' => 'Fjal umboðsstjórar (administratorar)',
+'activeusers-noresult' => 'Ongir brúkarar funnir.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Brúkara bólka rættindi',
 'listgrouprights-summary' => 'Henda síða vísir ein lista av brúkarabólkum, sum eru útgreinaðir á hesi wiki og rættindini hjá teimum einstøku bólkunum.
index 6e1debe..618bb78 100644 (file)
@@ -30,6 +30,7 @@
  * @author Erkethan
  * @author Esbardu
  * @author Fabrice Ferrer
+ * @author François Melchior
  * @author Fryed-peach
  * @author Geoleplubo
  * @author Giro720
@@ -803,7 +804,7 @@ N'oubliez pas de modifier [[Special:Preferences|vos préférences pour {{SITENAM
 'userlogin-yourname' => "Nom d'utilisateur",
 'userlogin-yourname-ph' => "Entrez votre nom d'utilisateur",
 'createacct-helpusername-url' => "{{ns:Project}}:Nom d'utilisateur",
-'createacct-helpusername-link' => '([[{{MediaWiki:createacct-helpusername-url}}|aidez moi à choisir]])',
+'createacct-helpusername-link' => '([[{{MediaWiki:createacct-helpusername-url}}|(aidez moi à choisir)]])',
 'yourpassword' => 'Mot de passe&nbsp;:',
 'userlogin-yourpassword' => 'Mot de passe',
 'userlogin-yourpassword-ph' => 'Entrez votre mot de passe',
@@ -811,7 +812,7 @@ N'oubliez pas de modifier [[Special:Preferences|vos préférences pour {{SITENAM
 'yourpasswordagain' => 'Confirmez le mot de passe :',
 'createacct-yourpasswordagain' => 'Confirmez le mot de passe',
 'createacct-yourpasswordagain-ph' => 'Entrez à nouveau le mot de passe',
-'remembermypassword' => 'Me reconnecter automatiquement lors des prochaines visites avec ce navigateur (au maximum $1{{PLURAL:$1|jour|jours}})',
+'remembermypassword' => 'Me reconnecter automatiquement lors des prochaines visites avec ce navigateur (au maximum $1&nbsp;{{PLURAL:$1|jour|jours}})',
 'userlogin-remembermypassword' => 'Garder ma session active',
 'userlogin-signwithsecure' => "S'inscrire avec un serveur sécurisé",
 'securelogin-stick-https' => 'Rester connecté en HTTPS après la connexion',
@@ -1087,7 +1088,7 @@ Vous pouvez trouver plus de détails dans le [{{fullurl:{{#Special:Log}}/delete|
 'userpage-userdoesnotexist-view' => "Le compte utilisateur « $1 » n'est pas enregistré.",
 'blocked-notice-logextract' => "Cet utilisateur est actuellement bloqué.
 La dernière entrée du journal des blocages est indiquée ci-dessous à titre d'information :",
-'clearyourcache' => "'''Note :''' après avoir enregistré vos préférences, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
+'clearyourcache' => "'''Note :''' après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
 * '''Firefox / Safari :''' Maintenez la touche ''Maj'' (''Shift'') en cliquant sur le bouton ''Actualiser'' ou pressez ''Ctrl-F5'' ou ''Ctrl-R'' (''⌘-R'' sur un Mac) ;
 * '''Google Chrome :''' Appuyez sur ''Ctrl-Maj-R'' (''⌘-Shift-R'' sur un Mac) ;
 * '''Internet Explorer :''' Maintenez la touche ''Ctrl'' en cliquant sur le bouton ''Actualiser'' ou pressez ''Ctrl-F5'' ;
@@ -1597,10 +1598,10 @@ Elle ne doit pas dépasser $1 caractère{{PLURAL:$1||s}}.',
 'saveusergroups' => "Enregistrer les groupes de l'utilisateur",
 'userrights-groupsmember' => 'Membre de :',
 'userrights-groupsmember-auto' => 'Membre implicite de :',
-'userrights-groups-help' => "Vous pouvez modifier les groupes auxquels appartient cet utilisateur:
-* Une case cochée signifie que l'utilisateur se trouve dans ce groupe.
-* Une case non cochée signifie qu'{{GENDER:$1|il|elle}} ne s'y trouve pas.
-* Un astérisque (*) indique que vous ne pouvez pas retirer ce groupe une fois que vous l'avez ajouté, ou vice-versa.",
+'userrights-groups-help' => 'Vous pouvez modifier les groupes auxquels appartient {{GENDER:$1|cet utilisateur|cette utilisatrice}} :
+* Une case cochée signifie que l’utilisat{{GENDER:$1|eur|rice}} se trouve dans ce groupe.
+* Une case non cochée signifie qu’{{GENDER:$1|il|elle}} ne s’y trouve pas.
+* Un astérisque (*) indique que vous ne pouvez pas retirer ce groupe une fois que vous l’avez ajouté, ou vice-versa.',
 'userrights-reason' => 'Motif :',
 'userrights-no-interwiki' => "Vous n'avez pas la permission de modifier des droits d'utilisateurs sur d'autres wikis.",
 'userrights-nodatabase' => "La base de donnée « $1 » n'existe pas ou n'est pas locale.",
@@ -2349,6 +2350,15 @@ Ils nécessitent au moins un domaine de niveau supérieur, par exemple « *.org
 'listusers-noresult' => 'Aucun utilisateur trouvé. Vérifiez aussi les variantes de casse.',
 'listusers-blocked' => '(bloqué{{GENDER:$1||e|(e)}})',
 
+# Special:ActiveUsers
+'activeusers' => 'Liste des utilisateurs actifs',
+'activeusers-intro' => 'Ceci est une liste des utilisateurs qui ont exercé une quelconque activité au cours {{PLURAL:$1|de la dernière journée|des $1 derniers jours}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|action|actions}} lors {{PLURAL:$3|du dernier jour|des $3 derniers jours}}',
+'activeusers-from' => 'Afficher les utilisateurs depuis :',
+'activeusers-hidebots' => 'Masquer les robots',
+'activeusers-hidesysops' => 'Masquer les administrateurs',
+'activeusers-noresult' => 'Aucun utilisateur trouvé.',
+
 # Special:ListGroupRights
 'listgrouprights' => "Droits des groupes d'utilisateurs",
 'listgrouprights-summary' => "Cette page contient une liste des groupes définis sur ce wiki ainsi que les droits d'accès qui leur sont associés.
index 083c23d..cb7442c 100644 (file)
@@ -676,7 +676,7 @@ Non esqueza personalizar as súas [[Special:Preferences|preferencias de {{SITENA
 'createacct-yourpasswordagain' => 'Confirme o contrasinal',
 'createacct-yourpasswordagain-ph' => 'Insira o contrasinal outra vez',
 'remembermypassword' => 'Lembrar o meu contrasinal neste ordenador (ata $1 {{PLURAL:$1|día|días}})',
-'userlogin-remembermypassword' => 'Lembrádeme',
+'userlogin-remembermypassword' => 'Manter a miña conexión',
 'userlogin-signwithsecure' => 'Acceder ao sistema no servidor seguro',
 'securelogin-stick-https' => 'Permanecer conectado mediante as HTTPS despois de acceder',
 'yourdomainname' => 'O seu dominio:',
@@ -708,10 +708,12 @@ Non esqueza personalizar as súas [[Special:Preferences|preferencias de {{SITENA
 'createacct-realname' => 'Nome real (opcional)',
 'createaccountreason' => 'Motivo:',
 'createacct-reason' => 'Motivo',
+'createacct-reason-ph' => 'Por que crea outra conta?',
 'createacct-captcha' => 'Comprobación de seguridade',
 'createacct-captcha-help-url' => '{{ns:Project}}:Solicitar unha conta',
 'createacct-imgcaptcha-help' => 'Non pode ver a imaxe? [[{{MediaWiki:createacct-captcha-help-url}}|Solicite unha conta]]',
 'createacct-imgcaptcha-ph' => 'Insira o texto que ve enriba',
+'createacct-submit' => 'Crear a conta',
 'createacct-benefit-heading' => 'Xente coma vostede elabora {{SITENAME}}.',
 'createacct-benefit-body1' => 'edicións',
 'createacct-benefit-body2' => 'páxinas',
@@ -1505,6 +1507,7 @@ Ha de ter menos {{PLURAL:$1|dun carácter|de $1 caracteres}}.',
 'userrights-notallowed' => 'A súa conta non dispón dos permisos necesarios para asignar ou retirar dereitos de usuario.',
 'userrights-changeable-col' => 'Os grupos que pode cambiar',
 'userrights-unchangeable-col' => 'Os grupos que non pode cambiar',
+'userrights-conflict' => 'Hai un conflito cos dereitos de usuario! Aplique de novo os seus cambios.',
 
 # Groups
 'group' => 'Grupo:',
@@ -2252,6 +2255,15 @@ Cómpre, polo menos, un dominio de nivel superior; por exemplo, "*.org".<br />
 'listusers-noresult' => 'Non se atopou ningún usuario.',
 'listusers-blocked' => '(bloqueado)',
 
+# Special:ActiveUsers
+'activeusers' => 'Lista de usuarios activos',
+'activeusers-intro' => 'Esta é unha lista cos usuarios que tiveron algún tipo de actividade {{PLURAL:$1|no último día|nos últimos $1 días}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|acción|accións}} {{PLURAL:$3|no último día|nos últimos $3 días}}',
+'activeusers-from' => 'Mostrar os usuarios que comecen por:',
+'activeusers-hidebots' => 'Agochar os bots',
+'activeusers-hidesysops' => 'Agochar os administradores',
+'activeusers-noresult' => 'Non se atopou ningún usuario.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Dereitos dun usuario segundo o seu grupo',
 'listgrouprights-summary' => 'A seguinte lista mostra os grupos de usuario definidos neste wiki, cos seus dereitos de acceso asociados.
@@ -3881,7 +3893,11 @@ Debería recibir [{{SERVER}}{{SCRIPTPATH}}/COPYING unha copia da licenza públic
 'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Ruta dos artigos]',
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Ruta das escrituras]',
 
+'redirect' => 'Redirixir por nome de ficheiro, ID de usuario ou ID de revisión',
+'redirect-legend' => 'Redirixir a un ficheiro ou unha páxina',
+'redirect-summary' => 'Esta páxina especial redirixe cara a un ficheiro (dado o nome), unha páxina (dado o ID dunha revisión) ou unha páxina de usuario (dado o ID dun usuario).',
 'redirect-submit' => 'Continuar',
+'redirect-lookup' => 'Procurar:',
 'redirect-value' => 'Valor:',
 'redirect-user' => 'ID de usuario',
 'redirect-revision' => 'Revisión de páxina',
index 8e63d26..bbfe803 100644 (file)
@@ -2088,6 +2088,15 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'listusers-noresult' => 'કોઇ સભ્ય ન મળ્યો',
 'listusers-blocked' => '(પ્રતિબંધિત)',
 
+# Special:ActiveUsers
+'activeusers' => 'સક્રિય સભ્યોની યાદી',
+'activeusers-intro' => 'છેલ્લા  $1 {{PLURAL:$1|દિવસ|દિવસો}}માં જે સભ્યોએ કંઈક યોગદાન કર્યું હોય તેમની યાદી.',
+'activeusers-count' => '$1 {{PLURAL:$1|ફેરફાર|ફેરફારો}} છેલ્લા {{PLURAL:$3|દિવસ |$3 દિવસો }}માં',
+'activeusers-from' => 'આનાથી શરૂ થતા સભ્યો દર્શાવો:',
+'activeusers-hidebots' => 'બોટને છુપાવો',
+'activeusers-hidesysops' => 'પ્રબંધકો છુપાવો',
+'activeusers-noresult' => 'કોઇ સક્રીય સભ્ય ન મળ્યો',
+
 # Special:ListGroupRights
 'listgrouprights' => 'સભ્ય જૂથ ના હક્કો',
 'listgrouprights-summary' => 'નીચે આ વિકિ પર વ્યાખ્યાયિત સભ્ય જૂથોની યાદી, તેમની સાથે સંકળાયેલા હક્કો સાથે આપી છે.
index e6a5e46..1ce4c6c 100644 (file)
@@ -57,13 +57,19 @@ $messages = array(
 'tog-ccmeonemails' => '當亻厓寄電子郵件分其他用戶時,也寄一份副本到亻厓嘅信箱',
 'tog-diffonly' => '對比版本毋同時下背毋展示頁面內容',
 'tog-showhiddencats' => '展示隱藏分類',
+'tog-norollbackdiff' => '执行回退後毋顯示差異',
+'tog-useeditwarning' => '當離開頁面之時變更還吂儲存,請提醒𠊎',
 
 'underline-always' => '總係使用',
 'underline-never' => '從來毋用',
 'underline-default' => '外皮或瀏覽器默認',
 
 # Font style option in Special:Preferences
+'editfont-style' => '編寫區字型樣式:',
 'editfont-default' => '瀏覽器默認',
+'editfont-monospace' => '等距字型',
+'editfont-sansserif' => '無襯線字型',
+'editfont-serif' => '襯線字型',
 
 # Dates
 'sunday' => '星期日',
@@ -126,16 +132,22 @@ $messages = array(
 'hidden-categories' => '$1隻隱藏分類',
 'hidden-category-category' => '隱藏分類',
 'category-subcat-count' => '{{PLURAL:$2|邇隻分類有以下一隻子分類。|邇隻分類有$2隻子分類,以下列出矣$1隻。}}',
+'category-subcat-count-limited' => '邇隻分類有以下 $1 隻子分類。',
 'category-article-count' => '{{PLURAL:$2|本分類有以下一隻頁面。|本分類有$2隻頁面,以下列出矣$1隻。}}',
+'category-article-count-limited' => '邇隻分類有以下 $1 隻頁面。',
 'category-file-count' => '{{PLURAL:$2|邇隻分類有以下一隻文件。|邇隻分類有$2隻文件,以下列出矣$1隻。}}',
+'category-file-count-limited' => '邇隻分類有 $1 隻文件。',
 'listingcontinuesabbrev' => '繼續',
+'index-category' => '既索引嘅頁面',
 'noindex-category' => '還無索引嘅頁面',
+'broken-file-category' => '含有損壞檔案連結嘅頁面',
 
 'about' => '關於',
 'article' => '內容頁面',
 'newwindow' => '(在新視窗肚打開)',
 'cancel' => '取消',
 'moredotdotdot' => '還較多...',
+'morenotlisted' => '又較多還吂列出嘅項目...',
 'mypage' => '頁面',
 'mytalk' => '交流',
 'anontalk' => '本IP地址嘅交流',
@@ -157,7 +169,9 @@ $messages = array(
 'vector-action-delete' => '刪除',
 'vector-action-move' => '移動',
 'vector-action-protect' => '保護',
+'vector-action-undelete' => '恢復',
 'vector-action-unprotect' => '更改保護',
+'vector-simplesearch-preference' => '啟用簡化搜尋欄(僅限 Vector 外觀)',
 'vector-view-create' => '建立',
 'vector-view-edit' => '編寫',
 'vector-view-history' => '查看歷史',
@@ -228,7 +242,7 @@ $messages = array(
 $1',
 'pool-timeout' => '等待鎖定逾時',
 'pool-queuefull' => '請求隊列满矣',
-'pool-errorunknown' => '知得嘅差錯',
+'pool-errorunknown' => '知得嘅差錯',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
 'aboutsite' => '關於 {{SITENAME}}',
@@ -264,7 +278,7 @@ $1',
 'newmessageslink' => '新消息',
 'newmessagesdifflink' => '上擺更改',
 'youhavenewmessagesfromusers' => '汝有來自{{PLURAL:$3|另一位用戶|$3位用戶}}嘅$1($2)。',
-'youhavenewmessagesmanyusers' => '有來自多位用戶嘅$1( $2 )。',
+'youhavenewmessagesmanyusers' => '有來自多位用戶嘅$1( $2 )。',
 'newmessageslinkplural' => '{{PLURAL:$1|一條新信息|新信息}}',
 'newmessagesdifflinkplural' => '最新{{PLURAL:$1|更改|更改}}',
 'youhavenewmessagesmulti' => '汝在$1肚有新消息',
@@ -286,7 +300,7 @@ $1',
 'feed-invalid' => '無效嘅訂閱類型。',
 'feed-unavailable' => '毋提供聯合訂閱源',
 'site-rss-feed' => '$1嘅RSS訂閱',
-'site-atom-feed' => '$1嘅tom訂閱',
+'site-atom-feed' => '$1嘅Atom訂閱',
 'page-rss-feed' => '“$1”嘅RSS訂閱',
 'page-atom-feed' => '“$1”嘅Atom訂閱',
 'red-link-title' => '$1(頁面還無存在)',
@@ -364,10 +378,10 @@ $1',
 其毋曾提供任何解釋。',
 'badtitle' => '有錯嘅標題',
 'badtitletext' => '所請求頁面嘅標題是無效嘅、毋存在嘅,跨語言或跨wiki鏈接嘅標題有錯。其可能包含一隻或還較多做毋得用於標題嘅字符。',
-'perfcached' => 'Yî-ha chṳ̂-liau lòi-chhṳ khoai-chhí, khó-nèn yû chho-ngu. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Yî-ha he khoai-chhí chṳ̂-liau, chui-heu kiên-sîn sṳ̀-kiên he $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => '下列係緩存數據,因此可能毋係最新嘅。最多{{PLURAL:$1|單淨有1嘅結果|$1嘅結果}}可用。',
+'perfcachedts' => '下列係緩存數據,其最後更新時間係$1。單淨有{{PLURAL:$4|一嘅結果|$4嘅結果}}會畀顯示。',
 'querypage-no-updates' => '當前禁止對邇頁面進行更新。
-邇嘅數據將做毋得分立即重新整理。',
+邇嘅數據將做毋得分立即重新整理。',
 'wrong_wfQuery_params' => '有錯嘅參數分傳遞到wfQuery()<br />
 函數:$1<br />
 查詢:$2',
@@ -379,17 +393,29 @@ $1',
 'protectedpagetext' => '邇隻頁面已經分人保護以防止編輯或其他操作。',
 'viewsourcetext' => '汝做得查看並複製本頁面嘅源碼:',
 'viewyourtext' => "汝可以查看並複製'''汝對邇隻頁面作出編輯後'''嘅源代碼:",
-'protectedinterface' => 'Ke-chông thì-kiûng liáu ngiôn-thí ke kie-mien vùn-sṳ, kí yí-kîn pûn fûng-só fòng-chṳ́ sùi-yi ke siû-kói.',
-'editinginterface' => "'''Warning:''' You are editing a page which is used to provide interface text for the software.
-Changes to this page will affect the appearance of the user interface for other users.
-For translations, please consider using [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], the MediaWiki localisation project.",
+'protectedinterface' => '邇頁提供此wiki軟體嘅介面文字,其已畀保護以防止惡意修改。
+假使想修改所有wiki嘅翻譯,請到[//translatewiki.net/ translatewiki.net]上嘅MediaWiki本地化計畫。',
+'editinginterface' => "'''警告:'''汝今下編寫緊嘅頁面係用於提供軟體嘅介面文字。
+改變此頁將影響其他在邇隻wiki上嘅用戶介面外觀。
+如欲修改所有wiki嘅翻譯,請到[//translatewiki.net/ translatewiki.net]上的MediaWiki本地化計畫。",
 'sqlhidden' => '(隱藏SQL查詢)',
-'cascadeprotected' => 'Liá-ke vùn-chông yí-kîn pûn pó-fu, yîn-vi liá-ke hong-mien pûn yî-ha phêu-chu "lièn-só pó-fu" ke {{PLURAL:$1|yit-ke|tô-ke}} pûn pó-fu vùn-chông pâu-hàm:',
+'cascadeprotected' => '邇隻頁面已經畀保護,因為邇隻頁面被以下已標註"聯鎖保護"嘅{{PLURAL:$1|一個|多個}}畀保護頁面包含:
+$2',
+'namespaceprotected' => "您還無權限編輯'''$1'''名字空間嘅頁面。",
+'customcssprotected' => '你還無權限編輯邇隻CSS頁面,因為其包含矣其他用戶嘅個人設置。',
+'customjsprotected' => '你還無權限去編輯邇隻JavaScript頁面,因為其包含矣另一用戶嘅個人設定。',
 'ns-specialprotected' => '邇兜特殊頁面係毋做得編輯嘅。',
+'titleprotected' => "這個標題已經畀[[User:$1|$1]]保護以防止建立。理由係''$2''。",
+'filereadonlyerror' => '無辦法修改文件「$1」因為文件庫「$2」處於唯讀模式。 !
+管理員鎖定其嘅解釋係:「$3」。',
+'invalidtitle-knownnamespace' => '使用名字空間「$2」與文本「$3」嘅無效標題',
+'invalidtitle-unknownnamespace' => '使用未知名字空間編號$1與文本“$2”嘅無效標題',
 'exception-nologin' => '還吂登入',
 'exception-nologin-text' => '你愛登錄本wiki正做得查閲邇頁或進行操作。',
 
 # Virus scanner
+'virus-badscanner' => "損壞設定: 未知嘅病毒掃瞄器: ''$1''",
+'virus-scanfailed' => '掃瞄失敗 (代碼 $1)',
 'virus-unknownscanner' => '還吂知嘅反病毒軟件:',
 
 # Login and logout pages
@@ -398,16 +424,23 @@ For translations, please consider using [//translatewiki.net/wiki/Main_Page?setl
 汝做得用匿名方式繼續使用{{SITENAME}},或用相同或毋同用戶身份<span class='plainlinks'>[$1 登入]</span>。
 請注意,假使汝再次登入,本頁可能會繼續顯示,直到汝清除瀏覽器緩存。",
 'welcomeuser' => '歡迎,$1!',
+'welcomecreation-msg' => '汝嘅賬號已經建立。
+莫添忘訖設置[[Special:Preferences|{{SITENAME}}嘅個人參數]]。',
 'yourname' => '用戶名:',
 'userlogin-yourname' => '用戶名',
 'userlogin-yourname-ph' => '輸入汝嘅用戶名',
+'createacct-helpusername-url' => '{{ns:Project}}:用戶名方針',
+'createacct-helpusername-link' => '[[{{MediaWiki:createacct-helpusername-url}}|(幫𠊎選擇)]]',
 'yourpassword' => '密碼:',
 'userlogin-yourpassword' => '密碼',
 'userlogin-yourpassword-ph' => '輸入汝嘅密碼',
+'createacct-yourpassword-ph' => '輸入汝嘅密碼',
 'yourpasswordagain' => '再一擺輸入密碼:',
 'createacct-yourpasswordagain' => '確認密碼',
 'createacct-yourpasswordagain-ph' => '再一擺輸入密碼',
-'remembermypassword' => '在邇隻瀏覽器上記下亻厓嘅登入狀態(最長$1日)',
+'remembermypassword' => '在邇隻瀏覽器上記下𠊎嘅登入狀態(最長$1日)',
+'userlogin-remembermypassword' => '保持𠊎嘅登入狀態',
+'userlogin-signwithsecure' => '使用安全伺服器登入',
 'securelogin-stick-https' => '登入後繼續用HTTPS連接',
 'yourdomainname' => '汝嘅域名:',
 'password-change-forbidden' => '汝做毋得更改本wiki上嘅密碼。',
@@ -420,58 +453,76 @@ For translations, please consider using [//translatewiki.net/wiki/Main_Page?setl
 'logout' => '登出',
 'userlogout' => '登出',
 'notloggedin' => '還吂登入',
+'userlogin-noaccount' => '還無帳戶係無?',
+'userlogin-joinproject' => '參與 {{SITENAME}}',
 'nologin' => '還無帳號係無?$1。',
 'nologinlink' => '建立帳號',
 'createaccount' => '建立帳號',
 'gotaccount' => '已經擁有帳號係無?$1。',
 'gotaccountlink' => '登入',
 'userlogin-resetlink' => '毋記得汝嘅登入信息?',
+'helplogin-url' => 'Help:登入',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|登入説明]]',
+'createacct-join' => '輸入汝嘅基本資料:',
 'createacct-emailrequired' => '電郵地址:',
+'createacct-emailoptional' => '電郵地址(可選)',
+'createacct-email-ph' => '設置電郵地址',
 'createaccountmail' => '使用一隻臨時嘅隨機密碼,並發送其到以下指定嘅電子郵件地址',
 'createacct-realname' => '實名(可選)',
 'createaccountreason' => '原因:',
 'createacct-reason' => '原因',
+'createacct-reason-ph' => '您做麽嘅愛創建另一隻帳號',
 'createacct-captcha' => '安全檢查',
+'createacct-captcha-help-url' => '{{ns:Project}}:請求建立用戶',
+'createacct-imgcaptcha-help' => '看毋到圖像係無?[[{{MediaWiki:createacct-captcha-help-url}}|請求建立用戶]]',
+'createacct-imgcaptcha-ph' => '輸入汝在上背看到嘅字符',
+'createacct-submit' => '建立帳號',
+'createacct-benefit-heading' => '{{SITENAME}}是由與您共樣嘅人建立。',
 'createacct-benefit-body1' => '編寫數目',
 'createacct-benefit-body2' => '頁面數',
 'createacct-benefit-body3' => '近期貢獻人',
 'badretype' => '汝所撳入嘅密碼並無相同',
-'userexists' => 'Ngì sû-ngi̍p ke yung-fu miàng-chhṳ̂n yí-kîn chhùn-chhai, chhiáng nang-ngoi sién yit-ke.',
+'userexists' => '!汝所填入嘅用戶名稱已經存在,請另選一隻名稱。',
 'loginerror' => '登入差錯',
 'createacct-error' => '帳戶建立差錯',
 'createaccounterror' => '無辦法建立帳號:$1',
-'nocookiesnew' => 'Yí-kîn sṳ̀n-kûng chhóng-li̍p sîn yung-fu! chṳ̂n-chhet to ngì yí-kîn kôan-pit Cookies, chhiáng khôi-khí kí pin tên-ngi̍p.',
-'nocookieslogin' => '{{SITENAME}} li-yung Cookies chin-hàng yung-fu tên-ngi̍p, chṳ̂n-chhet to ngì yí-kîn kôan-pit Cookies, chhiáng khôi-khí kí pin chhùng-sîn tên-ngi̍p.',
-'nocookiesfornew' => 'lià ke yong-fu ke chong-ho hàn-màng kien-li̍p,ngài-tên mò-pan-fap khok-ngin kì ke lòi-ngièn. chhiáng khén-thin ǹ yî-kîn kôi-khí cookies,chhòng-sîn chai-ngi̍p heu chhai sṳ.',
-'noname' => 'Ngì hàn-mò sû-ngi̍p yit-ke yû-háu ke yung-fu miàng.',
+'nocookiesnew' => '本用戶賬號已分建立,但係汝登入失敗。{{SITENAME}}使用cookie登入。汝已停用cookie。請啓用cookie,之後使用汝嘅新用戶名和密碼登入。',
+'nocookieslogin' => '{{SITENAME}}用cookie登入。汝已停用cookie。請啓用cookie後再試一擺。',
+'nocookiesfornew' => '邇隻用戶嘅賬戶未建立,亻厓兜無法度確認其嘅來源。
+請確定汝已經開啟cookies,重新載入後再試一擺。',
+'noname' => '汝還無輸入一隻有效嘅用戶名。',
 'loginsuccesstitle' => '登入成功',
 'loginsuccess' => '汝今下以"$1"嘅身份在{{SITENAME}}登入。',
 'nosuchuser' => '尋毋到用戶 "$1"。
 用戶名稱係有大小寫區分嘅。
 檢查汝嘅拼寫,或者用下面嘅表格[[Special:UserLogin/signup|建立一隻新賬號]]。',
-'nosuchusershort' => 'Mò-yû yit-ke miàng vi "$1" ke yung-fu. Chhiáng kiám-chhà ngì-ke sû-ngi̍p ke vùn-sṳ he-féu yû chho-ngu.',
-'nouserspecified' => 'Ngì sî-yeu chṳ́-thin yit-ke yung-fu-miàng.',
-'wrongpassword' => 'Ngì sû-ngi̍p ke me̍t-me̍t chho-ngu, chhiáng chai chhṳ yit-chhṳ.',
-'wrongpasswordempty' => 'Hàn-mò sû-ngi̍p me̍t-me̍t! chhiáng chhûng-chhṳ.',
+'nosuchusershort' => '無有喊做“$1”嘅用戶。請檢查汝輸入嘅文字係毋係有差錯。',
+'nouserspecified' => '汝愛指定一隻用戶名。',
+'login-userblocked' => '邇隻用戶已畀封鎖。毋做得登入。',
+'wrongpassword' => '汝輸入嘅密碼有錯,請再試一擺。',
+'wrongpasswordempty' => '還無輸入密碼!請重試。',
 'passwordtooshort' => '汝嘅密碼毋得少過$1隻字符。',
-'mailmypassword' => 'Chiông sîn me̍t-ma ki-pûn ngô',
-'passwordremindertitle' => '{{SITENAME}} me̍t-me̍t thì-siáng',
+'password-name-match' => '汝嘅密碼必須與汝嘅用戶名毋相同。',
+'password-login-forbidden' => '邇隻用戶名稱及密碼嘅使用係畀禁止嘅。',
+'mailmypassword' => '用電郵寄新密碼分亻厓',
+'passwordremindertitle' => '{{SITENAME}}嘅新臨時密碼',
 'passwordremindertext' => 'Yû-ngìn (khó-nèn he ngì, lòi-chhṳ IP thi-tiám $1) yêu-khiù chiông sîn-ke{{SITENAME}} ($4) ke tên-ngi̍p me̍t-me̍t ki-kî. Yung-fu "$2" ke me̍t-me̍t hien-chhai he "$3". Chhiáng chhṳ-li̍p tên-ngi̍p pin kiên-kói me̍t-me̍t. Kó-yèn he khì-thâ ngìn  fat-chhut ke-chhiáng-khiù, fe̍t-chá ngì yí-kîn ki-tet me̍t-me̍t pin put chún-phi kói-pien kí, khó-yî fut-lio̍k chhṳ́ sêu-sit khi̍p ki-siu̍k sṳ́-yung ngì-ke khiu me̍t-me̍t.',
-'noemail' => 'Yung-fu "$1" hàn-mò tên-ki email thi-tiám.',
-'passwordsent' => 'Yung-fu "$1" ke sîn me̍t-me̍t yí-kîn ki-vông só tên-ki ke email thi-tiám. Chhiáng chhai sû-tó heu chai-hi tên-ngi̍p.',
-'blocked-mailpassword' => 'Chhai-yî liá-ke yung-fu pûn fûng-kim, chhiam-sṳ̀ kim-chṳ́ ngì chhiáng-khiù sṳ̂n-chhiáng sîn pi-me̍t. Chho-sṳ̀n mò phien-kin chhiáng kien-liong.',
+'noemail' => '用戶“$1”無登記電子郵件地址。',
+'passwordsent' => '用戶“$1”嘅新密碼已經寄到所登記嘅電子郵件地址。
+請在收到後再登入。',
+'blocked-mailpassword' => '汝嘅IP地址處於查封狀態故所毋允許編輯,為矣安全起見,密碼恢復功能已分禁用。',
 'eauthentsent' => '一封確認信已經發送到推薦地址。在發送其它郵件到邇隻賬戶前,汝必須首先按照邇封信肚嘅指導確認邇隻電子郵件信箱真實有效。',
 'throttled-mailpassword' => 'Me̍t-me̍t thì-siáng yí-kîn chhai-chhièn $1 séu-sṳ̀ nui fat-sung. Yîn-vi fòng-chṳ́ lam-yung, han-thin chhai $1 séu-sṳ̀ nui fat-sung yit-chhṳ me̍t-me̍t thì-siáng.',
-'mailerror' => 'Fat-sung email chho-ngu: $1',
+'mailerror' => '發送郵件出差錯:$1',
 'acct_creation_throttle_hit' => 'Tui-put-hí, ngì yí-kîn chu-chhak liáu $1 chong-ho. Ngì put-nèn chai chu-chhak liáu.',
 'emailauthenticated' => 'Ngì-ke email thi-tiám yí-kîn chhai-yî $1 khok-ngin yû-háu.',
-'emailnotauthenticated' => 'Ngì-ke email thi-tiám <strong> hàn-mò pûn ngin-chṳn </strong>. Yî-ha kûng-nèn chiông put-voi fat-sung ngim-hò email.',
-'noemailprefs' => 'Chṳ́-thin yit-ke email thi-tiám yî-khi̍p sṳ́-yung chhṳ́ kûng-yung.',
-'emailconfirmlink' => 'Khok-ngin ngì-ke email thi-tiám',
+'emailnotauthenticated' => '汝嘅郵箱地址<strong>還無分認証</strong>。以下功能將毋會發送任何郵件。',
+'noemailprefs' => '在您嘅偏好設定肚指定一隻電子郵件地址來使用邇隻功能。',
+'emailconfirmlink' => '確認汝嘅郵箱地址',
 'invalidemailaddress' => 'Email thi-tiám kak-sṳt put chṳn-khok, chhiáng sû-ngi̍p chṳn-khok ke email chhai-vi fe̍t-chá chhîn-khûng ke-sû-ngi̍p  khiông.',
-'accountcreated' => 'Yí-kîn kien-li̍p chong-fu.',
-'accountcreatedtext' => '$1 ke chong-fu yí-kîn chhong-kien.',
-'createaccount-title' => 'Chhai {{SITENAME}} tsûng-kiên kien-li̍p sîn tsong-ho',
+'accountcreated' => '已建立賬戶',
+'accountcreatedtext' => '$1嘅賬戶已經分建立。',
+'createaccount-title' => '在{{SITENAME}}肚建立新賬戶',
 'loginlanguagelabel' => '語言:$1',
 
 # Change password dialog
@@ -523,7 +574,7 @@ For translations, please consider using [//translatewiki.net/wiki/Main_Page?setl
 'minoredit' => 'Liá-he yit-ke séu siû-kói',
 'watchthis' => 'Kam-sṳ pún-chông',
 'savearticle' => 'Pó-chhùn pún-chông',
-'preview' => 'Yi-liau',
+'preview' => '預覽',
 'showpreview' => 'Hién-sṳ yi-ko',
 'showlivepreview' => 'Chit-sṳ̀ yi-ko',
 'showdiff' => 'Hién-sṳ chhâ-phe̍t',
@@ -552,7 +603,9 @@ Liá-chhṳ chhà-fûng he yù $1 só fûng ke. Tông-chûng ke ngièn-yîn he '
 Yeu kien-chho ke vùn-chông, chhiáng chhai ha-mien ke phiên-cho-khiông chûng sû-ngi̍p nui-yùng (Chhâm-siòng [[{{MediaWiki:Helppage}}|Pông-chhu]]).
 Kó-yèn ngì-he put-séu-sîm to chhṳ́ hong-mien, chhṳ̍t-chiap tiám-kit ngì hi-khí chûng ke "fì-chón" on-néu fán-fì.',
 'anontalkpagetext' => "---- ''Liá-he yit-ke hàn-mò kien-li̍p chong-ho ke ngia̍k-miàng yung-fu ke tui-fa-hong. Só-yî chṳ́-nèn yung IP thi-tiám lòi lâu kí lièn-lo̍k. Ke-IP thi-tiám khó-nèn yù-chhai kí-miàng yung-fu khiung-hióng. Kó-yèn ngì-he yit-miàng ngia̍k-miàng yung-fu ngin-vì pún-hong song ke phìn-lî kiên ngì mò-kôan, chhiáng [[Special:UserLogin|Chhóng-kien sîn chong-ho fe̍t-chá Tên-ngi̍p]] khó-yî phit-miên lòi-yì khì-thâ ngia̍k-miàng yung-fu ke fun-lon.''",
-'noarticletext' => 'Chhṳ́-chông muk-chhièn hàn-mò nui-yùng, ngì khó-yî chhai khì-thâ ya̍p [[Special:Search/{{PAGENAME}}|sêu-chhà chhṳ́-chông phêu-thì]] fe̍t-chá [{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} phiên-chho chhṳ́-chông].',
+'noarticletext' => '邇頁當前無內容,汝做得在其他頁[[Special:Search/{{PAGENAME}}|搜尋邇頁標題]],
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜尋有關日誌],
+或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 編寫邇頁]</span>。',
 'noarticletext-nopermission' => 'Liá-ke ya̍p muk-chhièn mò nui-yùng. 
 Ngì cho-tet chhai khì-thâ ya̍p [[Special:Search/{{PAGENAME}}|sêu-chhìm chhṳ́ ya̍p-thì]],fe̍t-chá <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sêu-chhìm yû-kôan ngit-chì]</span>,than-he ngì mò 
 khièn-han kien-li̍p chhṳ́ ya̍p.',
@@ -586,7 +639,7 @@ Ngì yin-tông chiông ngì só-cho ke siù-chho kâ-ngi̍p hien-yû ke nui-yùn
 'storedversion' => '已保存嘅修訂版本',
 'nonunicodebrowser' => "'''Kín-ko: Ngì-ke hi-khí put-nèn kiâm-yùng Unicode phiên-ho. Liá-piên yû yit-ke kûng-chok-khî chiông-voi hó-sṳ́ ngì nèn ôn-chhiòn-thi phiên-siá vùn-chông: fi ASCII sṳ-kûng chiông-yung sṳ̍p-liuk chin-chṳ phiên-ho mù-hìn chhut-hien chhai phiên-siá khiông-chûng.'''",
 'editingold' => "'''Kín-ko: Ngì chang-chhai phiên-siá-ke he pún-chông ke khiu pán-pún. Ngì pó-chhùn kí sṳ̀, chhai pún pán-pún chṳ̂-hei ke ngim-hò chhùng-siû tû-voi tiû-sṳt.'''",
-'yourdiff' => '毋同',
+'yourdiff' => '差別',
 'copyrightwarning' => "Chhiáng chu-yi ngì tui {{SITENAME}} ke só-yû kung-hien tû pûn-ngìn ngin-vì he chhai $2-hâ fat-phu, chhiáng chhà-khon chhai $1-ke se-chiet. Kó-yèn ngì chhin-mò hî-mong ngì-ke vùn-sṳ pûn-ngìn ngim-yi siù-chho lâu chai san-pu, chhiáng mò-yeu thì-kâu.<br /> Ngì thùng-sṳ̀ ya-yeu hiong Wikimedia pó-chṳn ngì só thì-kâu ke nui-yùng he chhṳ-kí só chok, fe̍t-chá lòi-chhṳ yit-ke mò-su pán-khièn pó-fu fe̍t-he siông-thùng chhṳ-yù ke lòi-ngièn. '''Mò-yeu chhai hàn-mò su-khièn ke chhìn-khóng-hâ fat-péu!'''<br />",
 'copyrightwarning2' => "Chhiáng chu-yi ngì tui {{SITENAME}} ke só-yû kung-hien tû khó-nèn pûn khì-thâ kung-hien-chá phiên-cho, siû-kói fe̍t-he chhù-thet.
 Kó-yèn ngì chhin-mò hî-mong ngì-ke ngì-ke vùn-sṳ pûn-ngìn ngim-yi chhùng-siû lâu chai san-pu, chhiáng mò-yeu thì-kâu.<br />
@@ -656,18 +709,19 @@ Tông-tsûng pûn $3 fûng-só ke ngièn-yîn he ''$2''",
 'viewpagelogs' => 'Chhà-khon liá-ke vùn-chông ke ngit-ki.',
 'nohistory' => 'Mò-yû pún-chông ke siû-thin ki-liu̍k.',
 'currentrev' => 'Tông-chhièn siû-thin pán-pún',
-'currentrev-asof' => 'Chhai $1-ke tông-sṳ̀   siù-tsho pán-pún.',
+'currentrev-asof' => '$1嘅最新修訂版本',
 'revisionasof' => '$1嘅修訂版本',
-'revision-info' => 'Chhai $1 yù $2 só-cho ke siû-thin pán-pún',
-'previousrevision' => '←Sông yit siû-thin',
-'nextrevision' => 'Hâ-yit-ke siû-cháng →',
-'currentrevisionlink' => 'Tông-chhièn siû-thin pán-pún',
-'cur' => 'tông-chhièn',
-'next' => 'hâ yit-ke',
-'last' => 'siên-chhièn',
+'revision-info' => '在$1由$2所做嘅修訂版本',
+'previousrevision' => '←上隻版本',
+'nextrevision' => '下隻版本→',
+'currentrevisionlink' => '最新版本',
+'cur' => '當前',
+'next' => '下一隻',
+'last' => '上一隻',
 'page_first' => '最早',
 'page_last' => '最尾',
-'histlegend' => 'Chhâ-phe̍t sién-chet: phêu-ki yeu pí-káu pán-pún ke tân-sién on-néu pin tiám-kit tí-phu ke on-néu chin-hàng pí-káu.<br /> Sot-mìn: (Tông-chhièn) chṳ́-chit lâu tông-chhièn pán-pún pí-káu, (Siên-chhièn) chṳ́-chit lâu chhièn yit-ke siû-thin pán-pún pí-káu, séu = séu siû-kói.',
+'histlegend' => "差別選擇:標記愛比較修訂版本嘅單選按鈕並點擊底部嘅按鈕進行比較。<br />
+說明:'''({{int:cur}})''' 指撈最新修訂版本比較,'''({{int:last}})''' 指與前一隻修訂修訂版本比較,'''{{int:minoreditletter}}''' = 細微修改。",
 'history-fieldset-title' => '瀏覽歷史',
 'history-show-deleted' => '單淨係已刪除嘅',
 'histfirst' => '最早',
@@ -679,11 +733,12 @@ Tông-tsûng pûn $3 fûng-só ke ngièn-yîn he ''$2''",
 'history-feed-title' => '修訂歷史',
 'history-feed-description' => '本wiki站上邇頁嘅修訂歷史',
 'history-feed-item-nocomment' => '$1在$2',
-'history-feed-empty' => 'Só chhiáng-khiù ke vùn-chông put-chhùn-chhai. Khó-nèn yí-kîn pûn-ngìn chhù-thet fe̍t-chá chhùng-sîn min-miàng. Sòng-chhṳ [[Special:Search|Sêu-chhà pún-chham]] siong-kôan ke sîn-kien vùn-chông.',
+'history-feed-empty' => '所請求嘅頁面毋存在。其可能已分刪除或重新命名。
+嘗試[[Special:Search|搜尋本站]]獲得相關嘅新建頁面。',
 
 # Revision deletion
 'rev-deleted-comment' => '(chu-sṳt yí-kîn yì-chhù)',
-'rev-deleted-user' => '(Yung-fu-miàng yí-kîn yì-chhù)',
+'rev-deleted-user' => '(用戶名已移除)',
 'rev-deleted-event' => '(hong-muk yí-kîn yì-chhù)',
 'rev-deleted-text-permission' => 'Ke-vùn-chông siû-thin yí-kîn pûn-chhiùng kûng-khiung vùn-tóng chûng yì-chhù. Chhai [{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} chhù-thet ngit-ki] chûng khó-nèn kiám-chhà to siòng-se ke sin-sit.',
 'rev-deleted-text-view' => 'Ke-vùn-chông siû-thin yí-kîn pûn-chhiùng kûng-khiung vùn-tóng chûng yì-chhù. Chok-vi mióng-chham ke kón-lî-yèn, khó-yî kiám-chhà; Chhai[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} chhù-thet ngit-ki] chûng khó-nèn kiám-chhà to siòng-se ke sin-sit.',
@@ -694,25 +749,25 @@ Tông-tsûng pûn $3 fûng-só ke ngièn-yîn he ''$2''",
 'revdelete-nooldid-text' => '汝還吂指定一隻目標修訂版本去進行邇隻功能、
 所指定嘅修訂版本毋存在,或者汝嘗試去隱藏今下嘅修訂版本。',
 'revdelete-show-file-submit' => '係',
-'revdelete-selected' => "'''Sién-chhí [[:$1]] ke  $2-chhṳ siû-thin:'''",
+'revdelete-selected' => "'''選取[[:$1]]嘅$2次修訂:'''",
 'logdelete-selected' => "'''Chhí-chhṳ '''$1''' ke $2-ke ngit-ki hong-muk:'''",
 'revdelete-text' => "'''Chhù-thet ke siû-thin yìn-yèn chiông-voi hién-sṳ chhai vùn-chông li̍t-sṳ́ chûng, than vùn-sṳ nui-yùng yí-kîn put-nèn pûn chung-ngìn fóng-mun.''' Chhai chhṳ́ miong-chham ke khì-thâ kón-lî-yèn chiông chhòi-nèn fóng-mun yún-chhòng ke nui-yùng pin theu-ko siông-thùng ke kie-mien fî-fu̍k chhù-hi, chhù-fî miong-chham kûng-chok-chá chin-hàng han-chṳ.",
 'revdelete-legend' => 'Sat-thin siû-thin han-chṳ:',
-'revdelete-hide-text' => 'Yún-chhòng siû-thin vùn-sṳ',
-'revdelete-hide-image' => 'Yún-chhòng tóng-on nui-yùng',
-'revdelete-hide-name' => 'Yún-chhòng thung-chok khi̍p muk-phêu',
-'revdelete-hide-comment' => 'Yún-chhòng phiên-chho sot-mìn',
-'revdelete-hide-user' => 'Yún-chhòng phiên-siá-chá ke yung-fu-miàng/IP',
+'revdelete-hide-text' => '隱藏修訂版本文字',
+'revdelete-hide-image' => '隱藏文件內容',
+'revdelete-hide-name' => '隱藏動作撈目標',
+'revdelete-hide-comment' => '隱藏編寫摘要',
+'revdelete-hide-user' => '隱藏編寫人嘅用戶名/IP地址',
 'revdelete-hide-restricted' => 'Chiông han-chṳ khiung-thùng yin-yung yî kón-lî-yèn',
-'revdelete-suppress' => 'Thùng-sṳ̀ ap-chṳ chhâu-chok-yèn yî-khi̍p khì-thâ yung-fu ke chṳ̂-liau',
-'revdelete-unsuppress' => 'Chhai yí-kîn fî-fu̍k ke siû-thin chûng yì-chhù han-chṳ',
-'revdelete-log' => 'Ngièn-yîn:',
+'revdelete-suppress' => '同時廢止由操作員撈其他用戶嘅數據',
+'revdelete-unsuppress' => '在已恢復嘅修訂肚移除限制',
+'revdelete-log' => '原因:',
 'revdelete-submit' => 'Yin-yung chhut-yì sién-chhí ke siû-thin',
 'revdelete-success' => "'''Siû-thin ke khó-kien-sin yí-kîn sṳ̀n-kûng sat-thin.'''",
-'logdelete-success' => "'''Sṳ-khien ke khó-kien-sin yí-kîn sṳ̀n-kûng sat-thin.'''",
-'revdel-restore' => 'Kiên-kói khó-kien-sin',
-'revdel-restore-deleted' => 'yí-kîn chhù-thet ke siû-thin pán-pún',
-'revdel-restore-visible' => 'khó-kien ke siû-thin pán-pún',
+'logdelete-success' => "'''事件嘅可見性已經成功設定。'''",
+'revdel-restore' => '更改可見性',
+'revdel-restore-deleted' => '已刪除嘅修訂版本',
+'revdel-restore-visible' => '見得到嘅修訂版本',
 'pagehist' => 'Vùn-tsông li̍t-sṳ́',
 'deletedhist' => 'Yí-kîn tshù-me̍t ke li̍t-sṳ́',
 
@@ -727,7 +782,7 @@ Tông-tsûng pûn $3 fûng-só ke ngièn-yîn he ''$2''",
 'mergehistory-merge' => '以下[[:$1]]嘅修訂可以合併到[[:$2]]。用邇選項按鈕欄去合併單淨有在指定時間以前所創建嘅修訂。愛留意嘅係使用導航連接就會重設邇一欄。',
 
 # Merge log
-'revertmerge' => 'Kié-tshù pìn-ha̍p',
+'revertmerge' => '解除合併',
 
 # Diffs
 'history-title' => '"$1" ke siû-thin li̍t-sṳ́',
@@ -747,10 +802,10 @@ chok-chhut ke {{PLURAL:$1|yit-ke chûng-thù siû-thin pán-pún|$1-ke chûng-th
 'notitlematches' => 'Mò-yû chhìm-cháu to phit-phi vùn-chông thì-muk',
 'textmatches' => 'Vùn-chông nui-yùng fù-ha̍p',
 'notextmatches' => 'Mò-yû vùn-chông nui-yùng phit-phi',
-'prevn' => 'Chhièn {{PLURAL:$1|$1}}-ke',
-'nextn' => 'hâ {{PLURAL:$1|$1}}-ke',
-'prevn-title' => 'Chhièn $1-ke kiet-kó',
-'nextn-title' => 'Heu $1-ke kiet-kó',
+'prevn' => '前頭$1隻',
+'nextn' => '後背$1隻',
+'prevn-title' => '前頭$1隻結果',
+'nextn-title' => '後背$1隻結果',
 'shown-title' => '每頁展示$1項結果',
 'viewprevnext' => '查看($1 {{int:pipe-separator}} $2)($3)',
 'searchmenu-exists' => "'''Pún wiki sông yû-miàng chhṳ̂n-cho “[[:$1]]” ke ya̍p-mien'''",
@@ -768,7 +823,7 @@ chok-chhut ke {{PLURAL:$1|yit-ke chûng-thù siû-thin pán-pún|$1-ke chûng-th
 'searchprofile-advanced-tooltip' => '在用戶安名空間肚搜尋',
 'search-result-size' => '$1 ($2隻字)',
 'search-result-category-size' => '{{PLURAL:$1|1-ke sṳ̀n-yèn|$1-ke sṳ̀n-yèn}} ({{PLURAL:$2|1-ke chṳ́  fûn-lui|$2-ke chṳ́  fûn-lui}}, {{PLURAL:$3|1-ke tóng-on|$3-ke tóng-on}})',
-'search-redirect' => '(chhùng-thin-hiong $1)',
+'search-redirect' => '(重定向 $1)',
 'search-section' => '(段落 $1)',
 'search-suggest' => 'Ngì shì-féu kié: $1',
 'search-interwiki-caption' => 'Chí-moi kie-va̍k',
@@ -778,7 +833,7 @@ chok-chhut ke {{PLURAL:$1|yit-ke chûng-thù siû-thin pán-pún|$1-ke chûng-th
 'searchall' => '全部',
 'showingresults' => "Ha-mien hién-sṳ chhiùng thi-'''$2'''-thiàu khôi-sṳ́ ke '''$1'''-thiàu kiet-kó:",
 'showingresultsnum' => "Ha-mien hién-sṳ chhiùng thi-'''$2'''-thiàu khôi-sṳ́ ke '''$3'''-thiàu kiet-kó:",
-'showingresultsheader' => "Tui '''$4''' ke {{PLURAL:$5|thi'''$1''' chṳ thi '''$3'''-ke kiet-kó|thi '''$1 - $2'''-hong, khiung '''$3'''-ke kiet-kó}}",
+'showingresultsheader' => "對'''$4'''嘅{{PLURAL:$5|第'''$1'''到第'''$3'''隻結果|第'''$1 - $2'''隻,共'''$3'''隻結果}}",
 'nonefound' => '<strong>Chu-yi:</strong> Sṳt-phai ke sêu-chhà vông-vông he chhut-yì chhṳ-thù sêu-chhà chû-yì "ke" fe̍t-chá "lâu" chṳ̂-lui ke sòng-kien-sṳ só yîn-hí.',
 'search-nonefound' => 'Chhà-chhìm chûng mò kiet-kó siông-fù.',
 'powersearch' => 'Chin-kiê sêu-chhà',
@@ -900,11 +955,11 @@ Tshòng-tón pit-sî chhai $1-ke sṳ-ngièn yî-ha.',
 'rcshowhidepatr' => '$1 kiám-chhà-ko ke phiên-siá',
 'rcshowhidemine' => '$1 ngô-ke phiên-siá',
 'rclinks' => 'Hién-sṳ chui-khiûn $2 thiên-nui ke chui-sîn ke $1-chhṳ kói-thung. <br />$3',
-'diff' => '毋同',
+'diff' => '差別',
 'hist' => '歷史',
-'hide' => 'Yún-chhòng',
-'show' => 'Hién-sṳ',
-'minoreditletter' => 'séu',
+'hide' => '隱藏',
+'show' => '展示',
+'minoreditletter' => '細微',
 'newpageletter' => 'Sîn',
 'boteditletter' => 'Kî-hi',
 'number_of_watching_users_pageview' => '[$1隻用戶關注]',
@@ -974,9 +1029,9 @@ Kó-yèn ngì yû liá-ke thù-hìn ke vàn-cháng thai-séu.",
 'php-uploaddisabledtext' => 'PHP 文件上載已經停用。請檢查 file_uploads 設定。',
 'uploadscripted' => 'Ke tóng-on pâu-hàm khó-nèn pûn mióng-lu-hi chho-ngu kié-sṳt ke HTML fe̍t-chá kiok-pún thoi-me̍t.',
 'uploadvirus' => 'Ke-tóng-on yû pâu-hàm phiang-thu̍k! Siòng-se chhìn-khóng: $1',
-'sourcefilename' => 'ä¾\86æº\90æª\94æ¡\88名',
-'destfilename' => 'ç\9b®æ¨\99æª\94æ¡\88名',
-'watchthisupload' => 'ç\9b£è¦\96æ\9c¬æª\94æ¡\88',
+'sourcefilename' => 'ä¾\86æº\90æ\96\87件名',
+'destfilename' => 'ç\9b®æ¨\99æ\96\87件名',
+'watchthisupload' => 'ç\9b£è¦\96æ\9c¬æ\96\87件',
 'filewasdeleted' => 'Chṳ̂-chhièn yí-kîn yû yit-ke thùng-miàng tóng-on pûn song-chhòn heu yu-pûn chhù-thet. Chhai song-chhòn  chhṳ́ tóng-on chṳ̂-chhièn sî-yeu kiám-chhà $1.',
 'upload-success-subj' => 'Sông-chhòn sṳ̀n-kûng',
 
@@ -1011,7 +1066,7 @@ Kó-yèn ngì yû liá-ke thù-hìn ke vàn-cháng thai-séu.",
 
 # File description page
 'file-anchor-link' => 'Tóng-on',
-'filehist' => 'Tóng-on li̍t-sṳ́',
+'filehist' => '文件歷史',
 'filehist-help' => 'Tiám-kit ngit-khì/sṳ̀-kiên yî kiám-sṳ tông-sṳ̀ chhut-hien-ko ke ke tóng-on.',
 'filehist-deleteone' => 'chhù-thet',
 'filehist-revert' => 'fu̍k-ngièn',
@@ -1022,7 +1077,7 @@ Kó-yèn ngì yû liá-ke thù-hìn ke vàn-cháng thai-séu.",
 'filehist-user' => 'Yung-fu',
 'filehist-dimensions' => 'Vì-thu',
 'filehist-comment' => 'Chu-kié',
-'imagelinks' => 'Tóng-on sṳ́-yung chhìn-khóng',
+'imagelinks' => '文件用處',
 'linkstoimage' => 'Yî-ha {{PLURAL:$1|ya̍p-mien|$1-ke ya̍p-mien}} lièn-chiap chṳ pún vùn-khien:',
 'nolinkstoimage' => 'Mò-yû vùn-chông lièn-chiap to pún tóng-on.',
 'sharedupload' => '本檔案來自於$1,渠可能在其它計劃項目肚分人應用。',
@@ -1051,7 +1106,7 @@ Kì chhai [$2 tóng-on mèu-su̍t ya̍p-mien] piên-kin ke mèu-su̍t yî ha-mie
 'unusedtemplateswlh' => 'Khì-thâ lièn-kiet',
 
 # Random page
-'randompage' => 'Sùi-kî thiàu-muk',
+'randompage' => '隨機頁面',
 'randompage-nopages' => 'Chhai liá-ke miàng-sṳ khûng-kiên chûng mò-yû hong-mien.',
 
 # Random redirect
@@ -1126,7 +1181,7 @@ Kì chhai [$2 tóng-on mèu-su̍t ya̍p-mien] piên-kin ke mèu-su̍t yî ha-mie
 'pager-older-n' => 'khiu $1-chhṳ',
 
 # Book sources
-'booksources' => 'Chham-ngoi sû-ngièn',
+'booksources' => '網絡書源',
 'booksources-search-legend' => 'Chhìm-cháu chham-ngoi sû-ngièn',
 'booksources-go' => 'Sung-chhut',
 'booksources-text' => 'Yî-ha he yit-fun sîn-sû fe̍t-chá ngi-sú-sû ke lie̍t-péu, pin khó-nèn yû ngì chang-hó chhìm-cháu ke sû ke chin-yit-phu sêu-sit:',
@@ -1146,12 +1201,12 @@ Kì chhai [$2 tóng-on mèu-su̍t ya̍p-mien] piên-kin ke mèu-su̍t yî ha-mie
 'prevpage' => 'Song yit-chông ($1)',
 'allpagesfrom' => 'Hién-sṳ chhiùng chhṳ́-chhu khôi-sṳ́ ke hong-mien:',
 'allpagesto' => 'Hién-sṳ chhiùng-chhṳ́ kiet-suk ke ya̍p:',
-'allarticles' => 'Só-yû ke vùn-chông',
+'allarticles' => '全部頁面',
 'allinnamespace' => 'Só-yû ke hong-mien (su̍k-yî $1 miàng-sṳ khûng-kiên)',
 'allnotinnamespace' => 'Só-yû ke hong-mien (put su̍k-yî $1 miàng-sṳ khûng-kiên)',
 'allpagesprev' => 'Chhièn',
 'allpagesnext' => 'Heu',
-'allpagessubmit' => 'Thì-kâu',
+'allpagessubmit' => '提交',
 'allpagesprefix' => 'Hién-sṳ khí--yû chhṳ́ miàng-sṳ khûng-kiên ke hong-mien:',
 'allpagesbadtitle' => 'Pûn-thin ke hong-mien phêu-thì he fî-fap ke, fe̍t-chá yung-khí yû yit-ke nui-phu ngî-ngièn fe̍t-he nui-phu wiki. Kí khó-nèn pâu-hàm yit-ke fe̍t kien-tô ke put-nèn yung chhai-yî phêu-thì ke sṳ-ngièn.',
 
@@ -1197,14 +1252,14 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Watchlist
 'watchlist' => '監視列表',
 'mywatchlist' => '監視列表',
-'watchlistfor2' => '$1-ke kam-sṳ lie̍t-péu $2',
+'watchlistfor2' => '$1嘅監視列表$2',
 'nowatchlist' => 'Ngì ke kam-sṳ lie̍t-péu he khûng-hî.',
 'watchlistanontext' => 'Chhiáng $1 yî kiám-sṳ fe̍t-chá phiên-chho ngì-ke kam-sṳ lie̍t-péu.',
 'watchnologin' => 'Hàn-mò tên-ngi̍p',
 'watchnologintext' => 'Ngì pit-sî siên [[Special:UserLogin|tên-ngi̍p]] chhòi-nèn kiên-kói ngì-ke kam-sṳ lie̍t-péu.',
 'addedwatchtext' => "Hong-mien \"[[:\$1]]\" yí-kîn pûn kâ-ngi̍p to ngì-ke [[Special:Watchlist|Kam-sṳ chhîn-tân]] chûng. Chiông-lòi yû-kôan chhṳ́ hong-mien khi̍p khì-thâ thó-lun-hong ke ngim-hò siû-cháng chiông-voi chhai hong-mien lie̍t-chhut, song-chhiá hàn-voi chhai [[Special:RecentChanges|Chui-khiûn ke kiên-kói]] chûng ke '''chhû-thí''' hìn-sṳt lie̍t-chhut. Kó-yèn  ngì heu-lòi sióng chhiùng hong-mien kam-sṳ chhîn-tân chûng chhîn-chhù, hí-khó tiám-kit thô-hòng thiàu-chûng \"thìn-chṳ́ kam-sṳ\" ke lièn-kiet。",
 'removedwatchtext' => 'Vùn-chông "[[:$1]]" yí-kîn chhiùng Ngì kekam-sṳ lie̍t-péu mien-chûng yì-chhù.',
-'watch' => 'Kam-sṳ',
+'watch' => '監視',
 'watchthispage' => 'Kam-sṳ pún-chông',
 'unwatch' => 'Thìn-chṳ́ kam-sṳ',
 'unwatchthispage' => 'Thìn-chṳ́ kam-sṳ',
@@ -1224,7 +1279,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Chang-chhai kam-sṳ...',
 'unwatching' => 'Chang-chhai thìn-chṳ́ kam-sṳ',
-'watcherrortext' => '更改「$1」嘅監視列表設定時出現差錯。',
+'watcherrortext' => '更改“$1”嘅監視列表設定時出現差錯。',
 
 'enotif_mailer' => '{{SITENAME}} email thûng-tî-hi',
 'enotif_reset' => 'Chiông só-yû hong-mien phêu-vi yí-kîn thu̍k-ko.',
@@ -1328,8 +1383,8 @@ Pûn chhù-thet chhièn ke só-yû siû-thin pán-pún, lièn-thùng chhù-thet
 'undelete-revision' => 'Chhù-thet pán-pún $1 chhṳ $2:',
 'undeleterevision-missing' => 'Chhṳ́ pán-pún ke nui-yùng put chṳn-khok fe̍t-chá yí-kîn yì-sṳt. Khó-nèn lièn-kiet chho-ngu, pûn yì-chhù fe̍t-he yí-kîn pûn fî-fu̍k.',
 'undeletebtn' => 'Fî-fu̍k',
-'undeletelink' => 'kiám-sṳ/fî-fu̍k',
-'undeleteviewlink' => 'chhà-khon',
+'undeletelink' => '查看/恢復',
+'undeleteviewlink' => '查看',
 'undeletereset' => 'Chhùng-sat',
 'undeletecomment' => 'Ngièn-yîn:',
 'undeletedrevisions' => '$1-ke siû-thin pán-pún yí-kîn fî-fu̍k',
@@ -1346,17 +1401,17 @@ Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut c
 'undelete-no-results' => 'Chhù-thet ki-liu̍k lî mò-yû fù-ha̍p ke kiet-kó.',
 
 # Namespace form on various pages
-'namespace' => 'Miàng-sṳ khûng-kiên:',
+'namespace' => '名字空間:',
 'invert' => 'Fán-hiong sién-chet',
 'blanknamespace' => '(主要)',
 
 # Contributions
 'contributions' => '{{GENDER:$1|用戶}}貢獻',
-'contributions-title' => '$1-ke yung-fu kung-hien',
+'contributions-title' => '$1嘅用戶貢獻',
 'mycontris' => '貢獻',
-'contribsub2' => '$1 ($2) ke kung-hien',
+'contribsub2' => '$1嘅貢獻($2)',
 'nocontribs' => 'Mò-yû chhìm-cháu to fù-ha̍p thi̍t-chṳ̂n ke kiên-kói.',
-'uctop' => '(Chui-sîn siû-thin)',
+'uctop' => '(最新修改)',
 'month' => 'Chhiùng liá-ke ngie̍t-fun (fe̍t-he kien-chó):',
 'year' => 'Chhiùng liá-ke ngièn-fun (fe̍t-he kien-chó):',
 
@@ -1365,7 +1420,7 @@ Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut c
 'sp-contributions-blocklog' => 'Fûng-kim ki-liu̍k',
 'sp-contributions-uploads' => 'sông-chhòn',
 'sp-contributions-logs' => '日誌',
-'sp-contributions-talk' => '對話',
+'sp-contributions-talk' => '交流',
 'sp-contributions-userrights' => 'Yung-fu khièn-han kón-lî',
 'sp-contributions-search' => 'Chhìm-cháu kung-hien ki-liu̍k',
 'sp-contributions-username' => 'IP chhô-vi fe̍t-chá yung-fu miàng-chhṳ̂n:',
@@ -1375,7 +1430,7 @@ Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut c
 # What links here
 'whatlinkshere' => '鏈接入頁面',
 'whatlinkshere-title' => 'Lièn-chiap to "$1" ke ya̍p',
-'whatlinkshere-page' => 'Vùn-chông:',
+'whatlinkshere-page' => '頁面:',
 'linkshere' => 'Yî-ha vùn-chông lièn-kiet to [[:$1]]:',
 'nolinkshere' => 'Mò-yû vùn-chông lièn-kiet to [[:$1]].',
 'nolinkshere-ns' => 'Chhai só-sién ke miàng-sṳ khûng-kiên nui  mò-yû vùn-chông lièn-kiet to[[:$1]].',
@@ -1410,7 +1465,7 @@ Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut c
 'ipbenableautoblock' => 'Chhṳ-thung chhà-fûng ke-yung-fu sṳ́-yung-ko ke IP thi-tiám',
 'ipbsubmit' => 'Chhà-fûng ke-yung-fu',
 'ipbother' => 'Khì-thâ sṳ̀-kiên:',
-'ipboptions' => '2 séu-sṳ̀:2 hours,1 thiên:1 day,3 thiên:3 days,1 chû:1 week,2 chû:2 weeks,1-ke ngie̍t:1 month,3-ke ngie̍t:3 months,6-ke ngie̍t:6 months,1 ngièn:1 year,yún-kiú:infinite',
+'ipboptions' => '2小時:2 hours,1日:1 day,3日:3 days,1星期:1 week,2星期:2 weeks,1隻月:1 month,3隻月:3 months,6隻月:6 months,1年:1 year,無限期:infinite',
 'ipbotheroption' => 'khì-thâ',
 'ipbotherreason' => 'Khì-thâ lî-yù:',
 'ipbhidename' => 'Chhai chhà-fûng ngit-ki, fa̍t-chhiok chhà-fûng lie̍t-péu yî-khi̍p yung-fu lie̍t-péu chûng yún-chhòng yung-fu-miàng.',
@@ -1436,8 +1491,8 @@ Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut c
 'ipblocklist-empty' => 'Chhà-fûng lie̍t-péu he khûng-hî.',
 'ipblocklist-no-results' => 'Só yêu-khiù ke IP thi-tiám/yung-fu-miàng mò-yû pûn chhà-fûng.',
 'blocklink' => '查封',
-'unblocklink' => 'kié-chhù kim-fûng',
-'change-blocklink' => 'kiên-kói fûng-kim',
+'unblocklink' => '解封',
+'change-blocklink' => '更改封禁',
 'contribslink' => '貢獻',
 'autoblocker' => 'Ngì-ke IP lâu pûn fûng-liáu ke "$1" he yit-yong ke. Fûng-só ngièn-yîn: "$2".',
 'blocklogpage' => 'Fûng-só ki-liu̍k',
@@ -1506,10 +1561,10 @@ chhiáng chhai hàng-thung chṳ̂-chhièn siên liáu-kié khì-thâ khó-nèn
 'talkexists' => "'''Hong-mien pún-sṳ̂n yì-thung sṳ̀n-kûng, than-he yù-yî sîn phêu-thì hâ yí-kîn yû tui-fa-hong chhùn-chhai, só-yî tui-fa-hong vù-fap yì-thung. Chhiáng sú-kûng ha̍p-phîn lióng-ke hong-mien'''.",
 'movedto' => 'yì-thung to',
 'movetalk' => 'Chhiáng thùng-sṳ̀ yì-thung tui-fa-chông',
-'movelogpage' => 'Yì-thung ngit-ki',
+'movelogpage' => '移動日誌',
 'movelogpagetext' => 'Yî-ha he yí-kîn yì-thung ke vùn-chông chhîn-tân.',
 'movereason' => 'Ngièn-yîn:',
-'revertmove' => 'fî-fu̍k ke-yì-thung',
+'revertmove' => '恢復',
 'delete_and_move' => 'Chhù-chhîn lâu yì-thung',
 'delete_and_move_text' => '==Sî-yeu chhù-thet==
 
@@ -1535,8 +1590,8 @@ Ngì khok-ngin sî-yeu chhù-thet ngièn hong-mien khi̍p chin-hàng yì-thung m
 
 # Namespace 8 related
 'allmessages' => 'Ne-thúng kie-mien',
-'allmessagesname' => 'Miàng-chhṳ̂n',
-'allmessagesdefault' => 'Yi-sat ke vùn-sṳ',
+'allmessagesname' => '',
+'allmessagesdefault' => '默認信息文字',
 'allmessagescurrent' => 'Tông-chhièn ke vùn-sṳ',
 'allmessagestext' => 'Liá-piên lie̍t-chhut só-yû hí-khó thin-chṳ ke ne-thúng kie-mien.
 Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
@@ -1583,30 +1638,29 @@ Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and
 'import-logentry-interwiki-detail' => 'Lòi-chhṳ $2-ke $1-ke siû-thin',
 
 # Tooltip help for the actions
-'tooltip-pt-userpage' => 'Ngài-ke yung-fu-ya̍p',
+'tooltip-pt-userpage' => '汝嘅用戶頁面',
 'tooltip-pt-anonuserpage' => 'Ngì-ke phiên-siá pún-chham só yung IP ke tui-yin yung-fu-chông',
-'tooltip-pt-mytalk' => 'Ngài-ke tui-fa-ya̍p',
+'tooltip-pt-mytalk' => '汝嘅交流頁',
 'tooltip-pt-anontalk' => 'Tui-yî lòi-chhṳ chhṳ́IP thi-tiám phiên-siá ke tui-fa',
-'tooltip-pt-preferences' => 'Ngô-ke chhâm-su sat-chṳ',
-'tooltip-pt-watchlist' => 'Ngô-ke kam-sṳ lie̍t-péu',
-'tooltip-pt-mycontris' => 'Ngài-ke kung-hien lie̍t-péu',
-'tooltip-pt-login' => '建議汝登入,但係並非必須嘅
-Kien-ngi ngì tên-ki, than-he pin-fî pit-sî.',
+'tooltip-pt-preferences' => '汝嘅偏好設定',
+'tooltip-pt-watchlist' => '汝監視頁面緊嘅更改列表',
+'tooltip-pt-mycontris' => '汝嘅貢獻列表',
+'tooltip-pt-login' => '建議汝登入,但係並非必須嘅',
 'tooltip-pt-anonlogin' => 'Kien-ngi ngì tên-ki, than-he pin-fî pit-sî.',
-'tooltip-pt-logout' => 'Tên-chhut',
+'tooltip-pt-logout' => '登出',
 'tooltip-ca-talk' => '關於頁面正文嘅討論',
 'tooltip-ca-edit' => '汝做得編寫邇頁,請在保存前用預覽撳掣。',
 'tooltip-ca-addsection' => '開始一隻新段落',
 'tooltip-ca-viewsource' => '本頁面受到保護。
 汝做得查看其嘅源碼。',
 'tooltip-ca-history' => '本頁面早先嘅修訂版本',
-'tooltip-ca-protect' => 'Pó-fu ke-vùn-chông',
-'tooltip-ca-delete' => 'Chhù-hi pún-chông',
+'tooltip-ca-protect' => '保護邇頁',
+'tooltip-ca-delete' => '刪除邇頁',
 'tooltip-ca-undelete' => 'Chiông liá-ke vùn-chông fî-fu̍k to pûn chhù-hi yî-chhièn ke chhong-khóng',
-'tooltip-ca-move' => 'Yì-thung pún-chông',
-'tooltip-ca-watch' => 'Chiông chhṳ́ vùn-chông kâ-ngi̍p kam-sṳ lie̍t-péu',
+'tooltip-ca-move' => '移動本頁',
+'tooltip-ca-watch' => '加邇頁入監視列表',
 'tooltip-ca-unwatch' => 'Chiông chhṳ́ vùn-chông chhiùng kam-sṳ lie̍t-péu chûng yì-chhù',
-'tooltip-search' => '尋找 {{SITENAME}}',
+'tooltip-search' => '搜尋{{SITENAME}}',
 'tooltip-search-go' => 'Van-yit yû siông-thùng ke phêu-thì chhùn-chhai, tshṳ̍t-tsiap chhièn-vông liá-ya̍p',
 'tooltip-search-fulltext' => '搜查包含邇兜文字嘅頁',
 'tooltip-p-logo' => '訪問頭頁',
@@ -1614,14 +1668,13 @@ Kien-ngi ngì tên-ki, than-he pin-fî pit-sî.',
 'tooltip-n-mainpage-description' => '探訪頭頁',
 'tooltip-n-portal' => '關於本計劃,汝可以做麼嘅,應該愛樣般做',
 'tooltip-n-currentevents' => '提供當前新聞事件嘅背景信息',
-'tooltip-n-recentchanges' => '列出網站肚嘅最近修改
-Lie̍t-chhut ke-mióng-chham chûng ke chui-khiûn siû-kói',
+'tooltip-n-recentchanges' => '列出網站肚嘅最近修改',
 'tooltip-n-randompage' => '隨機載入一隻頁面',
 'tooltip-n-help' => '尋找幫手',
 'tooltip-t-whatlinkshere' => '全部鏈接入本頁嘅維基頁面列表',
 'tooltip-t-recentchangeslinked' => '頁面鏈接出嘅所有頁面嘅更改',
 'tooltip-feed-rss' => 'Chṳ́-thin pún vùn-chông li̍t-sṳ́ ke RSS chṳ̂-liau',
-'tooltip-feed-atom' => 'Chṳ́-thin pún vùn-chông li̍t-sṳ́ ke Atom sêu-sit',
+'tooltip-feed-atom' => '訂閱邇頁嘅Atom源',
 'tooltip-t-contributions' => 'Chhà-khon ke-yung-fu ke kung-hien lie̍t-péu',
 'tooltip-t-emailuser' => 'Hiong ke-yung-fu fat-sung sin-sit',
 'tooltip-t-upload' => '上傳文件',
@@ -1633,11 +1686,11 @@ Lie̍t-chhut ke-mióng-chham chûng ke chui-khiûn siû-kói',
 'tooltip-ca-nstab-media' => 'Chhà-khon hìn-thí-chông',
 'tooltip-ca-nstab-special' => 'pún vùn-chông voi sùi-tén chṳ̂-liau-khu ke su-kí kiên-sîn, ngim-hò ngìn put-nèn chhṳ̍t-chiap phiên-cho',
 'tooltip-ca-nstab-project' => 'Chhà-khon hong-muk vùn-chông',
-'tooltip-ca-nstab-image' => 'Chhà-chhìm thù-phién ya̍p-mien',
+'tooltip-ca-nstab-image' => '查看文件頁面',
 'tooltip-ca-nstab-mediawiki' => 'Chhà-khon ne-thúng chṳ̂-liau',
 'tooltip-ca-nstab-template' => 'Chhà-khon mù-pán',
 'tooltip-ca-nstab-help' => 'Chhà-khon pông-chhu thiàu-muk',
-'tooltip-ca-nstab-category' => 'Chhà-khon fûn-lui thiàu-muk',
+'tooltip-ca-nstab-category' => '查看分類頁面',
 'tooltip-minoredit' => 'Phêu-ki sṳ̀n-vì séu siû-kói',
 'tooltip-save' => 'Pó-chhùn ngì-ke siù-chho',
 'tooltip-preview' => 'Yi-ko ngì-ke phiên-siá, chhiáng siên sṳ́-yung pún-kûng chai pó-chhùn!',
@@ -1721,12 +1774,12 @@ Lie̍t-chhut ke-mióng-chham chûng ke chui-khiûn siû-kói',
 # Bad image list
 'bad_image_list' => '請按照下列格式編寫:
 
-單淨係有(以 * 開頭)列出嘅項目會分考慮。
+單淨係有(以*開頭)列出嘅項目會分考慮。
 每一行嘅第一條鏈接必須係損壞文件嘅鏈接。
 然後同一行後方嘅鏈接會分看做例外,也就係講邇文件做得在哪兜頁面肚分顯示。',
 
 # Metadata
-'metadata' => 'Ngièn-sṳ́ sṳ-kí',
+'metadata' => '元數據',
 'metadata-help' => 'Chhṳ́ tóng-on chûng pâu-hàm yû khóng-chán ke sín-sit. Liá-ke sín-sit khó-nèn he yù sṳ-vi siong-kî fe̍t-chá mèu-ngì chhai chhóng-li̍p fe̍t-he su-sṳ-fa ko-chhàng chûng só kâ-thiâm ke. Kó-yèn chhṳ́ tóng-on ke ngièn tóng-on yí-kîn pûn siû-kói, sêu-sit chhai siû-kói heu ke tóng-on chûng chiông put-nèn vàn-chhiòn fán-yang chhut-lòi.',
 'metadata-expand' => 'Hién-sṳ siòng-se ke chṳ̂-liau',
 'metadata-collapse' => 'Yún-chhòng siòng-se ke chṳ̂-liau',
@@ -1792,7 +1845,7 @@ Chhiáng chhai chhùng-sîn kien-chho vùn-chông chhièn sâm-sṳ̂.",
 'recreate' => '重建',
 
 # action=purge
-'confirm_purge_button' => '確定',
+'confirm_purge_button' => '做得',
 'confirm-purge-top' => 'Chhîn-chhù pún-chông chhòng-chhùn?',
 
 # Multipage image navigation
@@ -1865,6 +1918,6 @@ sû-ngi̍p chang-kûi péu-tha̍t-sṳt
 # New logging system
 'revdelete-restricted' => 'yí-kîn yin-yung han-tsṳ tsṳ tshâu-tsok-yèn',
 'revdelete-unrestricted' => 'yí-kîn yì-tshù yû-kûan tshâu-tsok-yè ke han-tsṳ',
-'rightsnone' => '()',
+'rightsnone' => '()',
 
 );
index 367d846..184048f 100644 (file)
@@ -780,7 +780,7 @@ $2',
 'createacct-yourpasswordagain' => 'אימות הסיסמה',
 'createacct-yourpasswordagain-ph' => 'יש להקליד את הסיסמה שנית',
 'remembermypassword' => 'שמירת הכניסה שלי בדפדפן הזה (ל{{PLURAL:$1|יום אחד|יומיים|־$1 ימים}} לכל היותר)',
-'userlogin-remembermypassword' => '×\96×\9b×\95ר ×\90×\95ת×\99',
+'userlogin-remembermypassword' => '×\9c×\94ש×\90×\99ר ×\90×\95ת×\99 ×\9e×\97×\95×\91ר',
 'userlogin-signwithsecure' => 'כניסה לחשבון עם שרת מאובטח',
 'securelogin-stick-https' => 'המשך שימוש ב־HTTPS אחרי הכניסה',
 'yourdomainname' => 'המתחם שלך:',
@@ -812,11 +812,12 @@ $2',
 'createacct-realname' => 'שם אמיתי (לא חובה)',
 'createaccountreason' => 'סיבה:',
 'createacct-reason' => 'סיבה',
+'createacct-reason-ph' => 'סיבה ליצירת חשבון נוסף',
 'createacct-captcha' => 'בדיקת אבטחה',
 'createacct-captcha-help-url' => '{{ns:Project}}:בקשה לחשבון',
 'createacct-imgcaptcha-help' => 'לא רואים את התמונה? [[{{MediaWiki:createacct-captcha-help-url}}|בקשו חשבון]]',
 'createacct-imgcaptcha-ph' => 'יש להקליד את הטקסט המופיע למעלה',
-'createacct-submit' => 'יצירת החשבון שלך',
+'createacct-submit' => 'יצירת החשבון',
 'createacct-benefit-heading' => 'את האתר {{SITENAME}} יוצרים אנשים כמוך.',
 'createacct-benefit-body1' => 'עריכות',
 'createacct-benefit-body2' => 'דפים',
@@ -2344,6 +2345,15 @@ $1',
 'listusers-noresult' => 'לא נמצאו משתמשים.',
 'listusers-blocked' => '(חסום)',
 
+# Special:ActiveUsers
+'activeusers' => 'רשימת משתמשים פעילים',
+'activeusers-intro' => 'זוהי רשימת המשתמשים שביצעו פעולה כלשהי {{PLURAL:$1|ביום האחרון|ביומיים האחרונים|ב־$1 הימים האחרונים}}.',
+'activeusers-count' => '{{PLURAL:$1|פעולה אחת|$1 פעולות}} ב{{PLURAL:$3|יום האחרון|יומיים האחרונים|־$3 הימים האחרונים}}',
+'activeusers-from' => 'הצגת משתמשים החל מ:',
+'activeusers-hidebots' => 'הסתרת בוטים',
+'activeusers-hidesysops' => 'הסתרת מפעילי מערכת',
+'activeusers-noresult' => 'לא נמצאו משתמשים.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'רשימת הרשאות לקבוצה',
 'listgrouprights-summary' => 'זוהי רשימה של קבוצות המשתמש המוגדרות באתר זה, עם ההרשאות של כל אחת.
index a2a21a7..89d91eb 100644 (file)
@@ -2224,6 +2224,15 @@ Támogatott {{PLURAL:$2|protokoll|protokollok}}: <code>$1</code> (http:// az ala
 'listusers-noresult' => 'Nem található szerkesztő.',
 'listusers-blocked' => '(blokkolva)',
 
+# Special:ActiveUsers
+'activeusers' => 'Aktív szerkesztők listája',
+'activeusers-intro' => 'Ez a lap azon felhasználók listáját tartalmazza, akik csináltak valamilyen tevékenységet az elmúlt {{PLURAL:$1|egy|$1}} napban.',
+'activeusers-count' => '$1 szerkesztés az utolsó $3 napban',
+'activeusers-from' => 'Szerkesztők listázása a következő névtől kezdve:',
+'activeusers-hidebots' => 'Botok elrejtése',
+'activeusers-hidesysops' => 'Adminisztrátorok elrejtése',
+'activeusers-noresult' => 'Nem található ilyen szerkesztő.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Szerkesztői csoportok jogai',
 'listgrouprights-summary' => 'Lenn láthatóak a wikiben létező szerkesztői csoportok, valamint az azokhoz tartozó jogok.
index 486533d..4c5a2c7 100644 (file)
@@ -751,7 +751,7 @@ Perhatikan bahwa beberapa halaman mungkin masih terus menunjukkan bahwa Anda mas
 'yourname' => 'Nama pengguna:',
 'userlogin-yourname' => 'Nama pengguna',
 'userlogin-yourname-ph' => 'Masukkan nama pengguna Anda',
-'createacct-helpusername-url' => '{{ns:Project}}:Nama pengguna',
+'createacct-helpusername-url' => '{{ns:Project}}:Kebijakan nama pengguna',
 'createacct-helpusername-link' => '[[{{MediaWiki:createacct-helpusername-url}}|(pilihan nama pengguna)]]',
 'yourpassword' => 'Kata sandi:',
 'userlogin-yourpassword' => 'Kata sandi',
@@ -761,7 +761,7 @@ Perhatikan bahwa beberapa halaman mungkin masih terus menunjukkan bahwa Anda mas
 'createacct-yourpasswordagain' => 'Konfirmasi kata sandi',
 'createacct-yourpasswordagain-ph' => 'Masukkan lagi kata sandi',
 'remembermypassword' => 'Ingat kata sandi saya di komputer ini (selama $1 {{PLURAL:$1|hari|hari}})',
-'userlogin-remembermypassword' => 'Ingat saya',
+'userlogin-remembermypassword' => 'Biarkan saya tetap masuk',
 'userlogin-signwithsecure' => 'Masuk log dengan server aman',
 'securelogin-stick-https' => 'Tetap terhubung ke HTTPS setelah masuk',
 'yourdomainname' => 'Domain Anda:',
@@ -793,14 +793,16 @@ Perhatikan bahwa beberapa halaman mungkin masih terus menunjukkan bahwa Anda mas
 'createacct-realname' => 'Nama asli (opsional)',
 'createaccountreason' => 'Alasan:',
 'createacct-reason' => 'Alasan',
+'createacct-reason-ph' => 'Mengapa Anda membuat akun lain',
 'createacct-captcha' => 'Pemeriksaan keamanan',
 'createacct-captcha-help-url' => '{{ns:Project}}:Mohon buatkan akun',
 'createacct-imgcaptcha-help' => 'Tidak dapat melihat gambar? [[{{MediaWiki:createacct-captcha-help-url}}|Mohon buatkan akun]]',
 'createacct-imgcaptcha-ph' => 'Masukkan teks yang Anda lihat di atas',
+'createacct-submit' => 'Buat akun Anda',
 'createacct-benefit-heading' => '{{SITENAME}} dibuat oleh orang-orang seperti Anda.',
 'createacct-benefit-body1' => 'suntingan',
 'createacct-benefit-body2' => 'halaman',
-'createacct-benefit-body3' => 'kontributor bulan ini',
+'createacct-benefit-body3' => 'kontributor terakhir',
 'badretype' => 'Kata sandi yang Anda masukkan salah.',
 'userexists' => 'Nama pengguna yang dimasukkan telah digunakan.
 Silakan tentukan nama yang lain.',
@@ -887,6 +889,7 @@ Silakan menunggu sebelum mencoba lagi.',
 'resetpass-wrong-oldpass' => 'Kata sandi tidak sah.
 Anda mungkin telah berhasil mengganti kata sandi Anda atau telah meminta kata sandi sementara yang baru.',
 'resetpass-temp-password' => 'Kata sandi sementara:',
+'resetpass-abort-generic' => 'Perubahan kata sandi telah dibatalkan oleh ekstensi.',
 
 # Special:PasswordReset
 'passwordreset' => 'Setel ulang sandi',
@@ -1569,6 +1572,7 @@ Jika Anda memberikannya, nama asli Anda akan digunakan untuk memberi pengenalan
 'userrights-changeable-col' => 'Kelompok yang dapat Anda ubah',
 'userrights-unchangeable-col' => 'Kelompok yang tidak dapat Anda ubah',
 'userrights-irreversible-marker' => '$1*',
+'userrights-conflict' => 'Konflik hak pengguna! Silakan ubah kembali.',
 
 # Groups
 'group' => 'Kelompok:',
@@ -2139,7 +2143,7 @@ Suatu halaman dianggap sebagai halaman disambiguasi apabila halaman tersebut men
 'pageswithprop-legend' => 'Halaman dengan halaman properti',
 'pageswithprop-text' => 'Halaman ini berisi daftar halaman yang menggunakan properti halaman tertentu.',
 'pageswithprop-prop' => 'Nama properti:',
-'pageswithprop-submit' => 'Pergi',
+'pageswithprop-submit' => 'Lanjut',
 
 'doubleredirects' => 'Pengalihan ganda',
 'doubleredirectstext' => 'Halaman ini memuat daftar halaman yang dialihkan ke halaman pengalihan yang lain.
@@ -2304,6 +2308,15 @@ Perlu sedikitnya satu domain tingkat atas, misalnya "*.org".<br />
 'listusers-noresult' => 'Pengguna tidak ditemukan.',
 'listusers-blocked' => '(diblokir)',
 
+# Special:ActiveUsers
+'activeusers' => 'Daftar pengguna aktif',
+'activeusers-intro' => 'Berikut adalah daftar pengguna yang memiliki suatu bentuk aktivitas selama paling tidak $1 {{PLURAL:$1|hari|hari}} terakhir.',
+'activeusers-count' => '$1 {{PLURAL:$1|aktivitas|aktivitas}} dalam {{PLURAL:$3|1 hari|$3 hari}} terakhir',
+'activeusers-from' => 'Tampilkan pengguna mulai dari:',
+'activeusers-hidebots' => 'Sembunyikan bot',
+'activeusers-hidesysops' => 'Sembunyikan pengurus',
+'activeusers-noresult' => 'Pengguna tidak ditemukan.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Daftar kelompok pengguna',
 'listgrouprights-summary' => 'Berikut adalah daftar kelompok pengguna yang terdapat di wiki ini, dengan daftar hak akses mereka masing-masing. Informasi lebih lanjut mengenai hak masing-masing dapat ditemukan di [[{{MediaWiki:Listgrouprights-helppage}}|halaman bantuan hak pengguna]].',
@@ -3102,7 +3115,7 @@ Simpan ke komputer Anda dan unggah ke sini.',
 'cologneblue.css' => '/* CSS yang ada di sini akan diterapkan pada kulit Cologne Blue. */',
 'monobook.css' => '/* CSS yang ada di sini akan diterapkan pada kulit Monobook. */',
 'modern.css' => '/* CSS yang ada di sini akan diterapkan pada kulit Modern. */',
-'vector.css' => '/* CSS yang ada di sini akan diterapkan pada kulit Vektor. */',
+'vector.css' => '/* CSS nan ado di siko diterapkan pado kulik Vektor. */',
 'print.css' => '/* CSS yang ada di sini akan diterapkan pada tampilan cetak. */',
 'handheld.css' => '/* CSS yang ada di sini akan diterapkan untuk tampilan piranti genggam yang dikonfigurasi di $wgHandheldStyle. */',
 'noscript.css' => '/* CSS di sini akan mempengaruhi pengguna dengan skrip Java non-aktif */',
@@ -4047,6 +4060,8 @@ Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi
 'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Artikel path]',
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Skrip path]',
 
+'redirect-submit' => 'Lanjut',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Pencarian berkas duplikat',
 'fileduplicatesearch-summary' => 'Pencarian duplikat berkas berdasarkan nilai hash-nya.',
index 910dd2e..f0c1915 100644 (file)
@@ -712,7 +712,7 @@ Non dimenticare di personalizzare le [[Special:Preferences|preferenze di {{SITEN
 'createacct-yourpasswordagain' => 'Conferma password',
 'createacct-yourpasswordagain-ph' => 'Inserisci nuovamente la password',
 'remembermypassword' => 'Ricorda la password su questo browser (per un massimo di $1 {{PLURAL:$1|giorno|giorni}})',
-'userlogin-remembermypassword' => 'Ricordami',
+'userlogin-remembermypassword' => 'Mantienimi collegato',
 'userlogin-signwithsecure' => 'Accedi con il server sicuro',
 'securelogin-stick-https' => 'Resta connesso attraverso HTTPS dopo il login',
 'yourdomainname' => 'Specificare il dominio',
@@ -2223,6 +2223,15 @@ Vedi anche le [[Special:WantedCategories|categorie richieste]].',
 'listusers-noresult' => 'Nessun utente risponde ai criteri impostati.',
 'listusers-blocked' => '(bloccato)',
 
+# Special:ActiveUsers
+'activeusers' => 'Elenco degli utenti attivi',
+'activeusers-intro' => 'Questo è un elenco di utenti che hanno avuto qualche tipo di attività da $1 {{PLURAL:$1|giorno|giorni}} a questa parte.',
+'activeusers-count' => "$1 {{PLURAL:$1|azione|azioni}} {{PLURAL:$3|nell'ultimo giorno|negli ultimi $3 giorni}}",
+'activeusers-from' => 'Mostra gli utenti a partire da:',
+'activeusers-hidebots' => 'Nascondi i bot',
+'activeusers-hidesysops' => 'Nascondi gli amministratori',
+'activeusers-noresult' => 'Nessun utente risponde ai criteri impostati.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Diritti del gruppo utente',
 'listgrouprights-summary' => "Di seguito sono elencati i gruppi utente definiti per questo sito, con i diritti d'accesso loro associati.
index 0cd84d3..f1cb087 100644 (file)
@@ -2407,6 +2407,15 @@ contenttype/subtypeの形式で入力してください (例: <code>image/jpeg</
 'listusers-noresult' => '利用者が見つかりませんでした。',
 'listusers-blocked' => '(ブロック中)',
 
+# Special:ActiveUsers
+'activeusers' => '活動中の利用者一覧',
+'activeusers-intro' => 'これは過去 $1 {{PLURAL:$1|日|日間}}に何らかの活動をした利用者の一覧です。',
+'activeusers-count' => '過去 {{PLURAL:$3|1 日|$3 日間}}に $1 {{PLURAL:$1|回の操作}}',
+'activeusers-from' => '最初に表示する利用者:',
+'activeusers-hidebots' => 'ボットを隠す',
+'activeusers-hidesysops' => '管理者を隠す',
+'activeusers-noresult' => '利用者が見つかりませんでした。',
+
 # Special:ListGroupRights
 'listgrouprights' => '利用者グループの権限',
 'listgrouprights-summary' => '以下は、このウィキに登録されている利用者グループと、それぞれに割り当てられている権限の一覧です。
index 7e5c1f7..e279bad 100644 (file)
@@ -648,7 +648,7 @@ $2',
 ಅಥವ [{{fullurl:{{FULLPAGENAME}}|action=edit}} ಈ ಪುಟವನ್ನು ಸಂಪಾದಿಸಬಹುದು]</span>.',
 'noarticletext-nopermission' => 'ಈ ಪುಟದಲ್ಲಿ ಸದ್ಯಕ್ಕೆ ಯಾವ ಪಠ್ಯವೂ ಇಲ್ಲ.
 ನೀವು ಇತರ ಪುಟಗಳಲ್ಲಿ [[ವಿಶೇಷ:Search/{{PAGENAME}}|ಈ ಶೀರ್ಷಿಕೆಗಾಗಿ ಹುಡುಕಬಹುದು]],
-à²\85ಥವಾ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} à²¸à²\82ಬà²\82ಧಿಸಿದ à²¦à²¾à²\96ಲಾತಿ à²¹à³\81ಡà³\81à²\95ಿ]</span>, ಆದರೆ ನಿಮಗೆ ಈ ಪುಟವನ್ನು ಸಂಪಾದಿಸಲು ಅನುಮತಿಯಿಲ್ಲ.',
+à²\85ಥವಾ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} à²¸à²\82ಬà²\82ಧಿಸಿದ à²¦à²¾à²\96ಲಾತಿ à²¹à³\81ಡà³\81à²\95ಬಹà³\81ದà³\81]</span>, ಆದರೆ ನಿಮಗೆ ಈ ಪುಟವನ್ನು ಸಂಪಾದಿಸಲು ಅನುಮತಿಯಿಲ್ಲ.',
 'userpage-userdoesnotexist' => 'ಬಳಕೆದಾರ ಖಾತೆ "<nowiki>$1</nowiki>" ದಾಖಲಾಗಿಲ್ಲ. ನೀವು ಇದೇ ಪುಟವನ್ನು ಸೃಷ್ಟಿ/ಸಂಪಾದನೆ ಮಾಡಬೇಕೆಂದಿರುವಿರಿ ಎಂದು ಖಾತ್ರಿ ಮಾಡಿಕೊಳ್ಳಿ.',
 'blocked-notice-logextract' => 'ಈ ಬಳಕೆದಾರರನ್ನು  ಪ್ರಸ್ತುತವಾಗಿ  ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ. 
 ಇತ್ತೀಚಿನ  ನಿರ್ಬಂಧನೆಯ ದಾಖಲೆಯನ್ನು ಉಲ್ಲೇಖಕ್ಕಾಗಿ ಕೆಳಗೆ ಕೊಟ್ಟಿದೆ:',
@@ -661,7 +661,8 @@ $2',
 'sitejspreview' => "'''ನೆನಪಿಡಿ: ನೀವು ಇಲ್ಲಿ ಕೇವಲ ನಿಮ್ಮ ಬಳಕೆದಾರ CSSನ ಮುನ್ನೋಟ ನೋಡುತ್ತಿರುವಿರಿ.''''''ಅದನ್ನು ಇನ್ನೂ ಉಳಿಸಲಾಗಿಲ್ಲ!'''",
 'updated' => '(ನಕಲೆರಿಸಲಾಗಿದೆ)',
 'note' => "'''ಸೂಚನೆ:'''",
-'previewnote' => "'''ಇದು ಕೇವಲ ಮುನ್ನೋಟ; ಪುಟವನ್ನು ಇನ್ನೂ ಉಳಿಸಲಾಗಿಲ್ಲ ಎಂಬುದನ್ನು ಮರೆಯದಿರಿ!'''",
+'previewnote' => "'''ಇದು ಕೇವಲ ಮುನ್ನೋಟ.'''
+ಪುಟವನ್ನು ಇನ್ನೂ ಉಳಿಸಲಾಗಿಲ್ಲ ಎಂಬುದನ್ನು ಮರೆಯದಿರಿ!",
 'continue-editing' => 'ಸಂಪಾದನೆಯ ಪ್ರದೇಶಕ್ಕೆ  ಹೋಗಿ',
 'editing' => "'$1' ಲೇಖನ ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ",
 'editingsection' => '$1 (ವಿಭಾಗ) ಅನ್ನು ಸಂಪಾದಿಸುತ್ತಿರುವಿರಿ',
@@ -837,7 +838,7 @@ $2',
 'compareselectedversions' => 'ಆಯ್ಕೆ ಮಾಡಿದ ಆವೃತ್ತಿಗಳನ್ನು ಹೊಂದಾಣಿಕೆ ಮಾಡಿ ನೋಡಿ',
 'showhideselectedversions' => 'ಆಯ್ದ ಆವೃತ್ತಿಗಳನ್ನು ತೋರಿಸು/ಅಡಗಿಸು',
 'editundo' => 'ಹಿಂದಿನಂತೆ',
-'diff-multi' => '(ಮಧ್ಯದಲ್ಲಿ ಆಗಿರುವ {{PLURAL:$1|೧ ಬದಲಾವಣೆಯನ್ನು|$1 ಬದಲಾವಣೆಗಳನ್ನು}} ತೋರಿಸಲಾಗಿಲ್ಲ.)',
+'diff-multi' => '(ಮಧ್ಯದಲ್ಲಿ {{PLURAL:$2|ಒಬ್ಬ|$2}} ಸದಸ್ಯರಿಂದ ಆಗಿರುವ {{PLURAL:$1|೧ ಬದಲಾವಣೆಯನ್ನು|$1 ಬದಲಾವಣೆಗಳನ್ನು}} ತೋರಿಸಲಾಗಿಲ್ಲ.)',
 
 # Search results
 'searchresults' => 'ಶೋಧನೆಯ ಫಲಿತಾಂಶಗಳು',
@@ -963,8 +964,7 @@ $2',
 'gender-female' => 'ಸ್ತ್ರೀ',
 'email' => 'ಇ-ಅಂಚೆ',
 'prefs-help-realname' => 'ನಿಜ ಹೆಸರು ನೀಡುವುದು ಐಚ್ಛಿಕ. ನೀವು ಅದನ್ನು ನೀಡಿದಲ್ಲಿ ನಿಮ್ಮ ಕಾಣಿಕೆಗಳಿಗೆ ನಿಮಗೆ ಮನ್ನಣೆ ನೀಡಲಾಗುವುದು.',
-'prefs-help-email' => 'ಇ-ಅಂಚೆ ವಿಳಾಸ ಕಡ್ಡಾಯವಲ್ಲ, ಆದರೆ ನೀವು ಅದನ್ನು ನೀಡಿದರೆ ನೀವು ನಿಮ್ಮ ಪ್ರವೇಶ ಪದವನ್ನು ಮರೆತರೆ ಅದನ್ನು ನಿಮಗೆ ಇ-ಅಂಚೆಯಿಂದ ಕಳುಹಿಸಿಬಹುದು.
-ಅಲ್ಲದೆ ಬೇರೆಯವರು ನಿಮ್ಮನ್ನು ಇತರರಿಗೆ ತಿಳಿಯದಂತೆ ನಿಮ್ಮ ಸದಸ್ಯ ಪುಟ ಅಥವ ಚರ್ಚೆ ಪುಟದ ಮೂಲಕ ಸಂಪರ್ಕಿಸಬಹುದು.',
+'prefs-help-email' => 'ಇ-ಅಂಚೆ ವಿಳಾಸ ಕಡ್ಡಾಯವಲ್ಲ, ಆದರೆ ನೀವು ಅದನ್ನು ನೀಡಿದರೆ ನೀವು ನಿಮ್ಮ ಪ್ರವೇಶ ಪದವನ್ನು ಮರೆತರೆ ಅದನ್ನು ನಿಮಗೆ ಇ-ಅಂಚೆಯಿಂದ ಕಳುಹಿಸಿಬಹುದು.',
 'prefs-help-email-required' => 'ಇ-ಅಂಚೆ ವಿಳಾಸ ಬೇಕಾಗಿದೆ.',
 'prefs-i18n' => 'ಅಂತರರಾಷ್ಟ್ರೀಕರಣ',
 'prefs-signature' => 'ಸಹಿ',
@@ -1439,6 +1439,10 @@ $2',
 'listusers-submit' => 'ತೋರು',
 'listusers-noresult' => 'ಯಾವ ಬಳಕೆದಾರರೂ ಸಿಗಲಿಲ್ಲ.',
 
+# Special:ActiveUsers
+'activeusers' => 'ಸಕ್ರಿಯ ಸದಸ್ಯರ ಪಟ್ಟಿ',
+'activeusers-noresult' => 'ಯಾವ ಬಳಕೆದಾರರೂ ಸಿಗಲಿಲ್ಲ.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'ಬಳಕೆದಾರ ಗುಂಪು ಹಕ್ಕುಗಳು',
 'listgrouprights-summary' => 'ಈ ವಿಕಿಯಲ್ಲಿ ಪ್ರಚಲಿತವಾಗಿರುವ ಬಳಕೆದಾರ ಗುಂಪುಗಳು ಮತ್ತು ಆ ಗುಂಪುಗಳಿಗೆ ಅನ್ವಯಿಸುವ ಹಕ್ಕುಗಳು ಈ ಕೆಳಗಿನಂತಿದೆ.',
@@ -1677,7 +1681,7 @@ $2',
 'ipusubmit' => 'ಈ ವಿಳಾಸದ ತಡೆಯನ್ನು ತೆಗೆ',
 'unblocked' => '[[User:$1|$1]] ಖಾತೆಯ ತಡೆಯನ್ನು ತೆಗೆಯಲಾಗಿದೆ',
 'unblocked-id' => '$1 ತಡೆಯನ್ನು ತೆಗೆಯಲಾಗಿದೆ',
-'ipblocklist' => 'ನಿರ್ಬಂಧಿಸಲಾಗಿರುವ IP ವಿಳಾಸಗಳು ಹಾಗೂ ಬಳಕೆಯ ಹೆಸರುಗಳು',
+'ipblocklist' => 'ನಿರ್ಬಂಧಿಸಲಾಗಿರುವ ಸದಸ್ಯರು',
 'ipblocklist-legend' => 'ತಡೆಹಿಡಿಯಲಾದ ಬಳಕೆದಾರನನ್ನು ಹುಡುಕು',
 'ipblocklist-submit' => 'ಹುಡುಕು',
 'infiniteblock' => 'ಅನಂತ',
index 7accb39..fd61709 100644 (file)
@@ -2367,6 +2367,15 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'listusers-noresult' => '해당 사용자가 없습니다.',
 'listusers-blocked' => '(차단됨)',
 
+# Special:ActiveUsers
+'activeusers' => '활동적인 사용자 목록',
+'activeusers-intro' => '다음은 최근 $1{{PLURAL:$1|일}} 동안 활동한 사용자의 목록입니다.',
+'activeusers-count' => '최근 {{PLURAL:$3|$3일}} 사이의 {{PLURAL:$1|활동}} $1회',
+'activeusers-from' => '다음으로 시작하는 사용자를 보기:',
+'activeusers-hidebots' => '봇을 숨기기',
+'activeusers-hidesysops' => '관리자를 숨기기',
+'activeusers-noresult' => '사용자가 없습니다.',
+
 # Special:ListGroupRights
 'listgrouprights' => '사용자 권한 목록',
 'listgrouprights-summary' => '다음은 이 위키에 있는 사용자 권한 그룹의 목록입니다.
index c5c163f..0e938a6 100644 (file)
@@ -1935,6 +1935,15 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'listusers-noresult' => 'Къошулуучула табылмадыла.',
 'listusers-blocked' => '(блокга салыныбды)',
 
+# Special:ActiveUsers
+'activeusers' => 'Актив къошулуучуланы тизмеси',
+'activeusers-intro' => 'Бу, ахыр $1 {{PLURAL:$1|кюнде|кюнде}} къаллайда болсун ишлетме кёргюзген къошлуучуланы тизмесиди.',
+'activeusers-count' => 'Ахыр {{PLURAL:$3|кюнде|$3 кюнде}} $1 {{PLURAL:$1|тюрлендириу|тюрлендириу}}',
+'activeusers-from' => 'Бу бла башланнган къошлуучуланы кёргюз:',
+'activeusers-hidebots' => 'Ботланы джашыр',
+'activeusers-hidesysops' => 'Администраторланы джашыр',
+'activeusers-noresult' => 'Къошлуучу табылмады.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Къошулуучуланы къауумуну хакълары',
 'listgrouprights-summary' => 'Тюбюндеги бу викиде танылгъан къошулуучу къауумланы эмда аланы хакъларыны тизмеси.
index e61f645..6795366 100644 (file)
@@ -2335,6 +2335,15 @@ eins vun all däm op eimol.',
 'listusers-noresult' => 'Keine Metmaacher jefonge.',
 'listusers-blocked' => '(jespert)',
 
+# Special:ActiveUsers
+'activeusers' => 'Leß met de aktiive Metmaacher',
+'activeusers-intro' => 'Dat heh es en Leß met dä Metmaacher, di {{PLURAL:$1|zick jäßtere|en de läzde $1 Dääsch|hück}} ööhnsjät jemaat han.',
+'activeusers-count' => '{{PLURAL:$1|ein Änderong|$1 Änderonge|kein Änderonge}} {{PLURAL:$3|aam lezde Daach|en de lezte $3 Dääsch|hück}}',
+'activeusers-from' => 'Donn de Metmaacher zeije aff:',
+'activeusers-hidebots' => 'De Bots fott lohße',
+'activeusers-hidesysops' => 'De Wiki_Köbesse fott lohße',
+'activeusers-noresult' => 'Kein Metmaacher jefonge.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Metmaacher-Jruppe-Rääschte',
 'listgrouprights-summary' => 'Hee kütt de Liss met dä Medmaacher-Jruppe, di dat Wiki hee kennt, un denne ier Rääschte.
index 4554d83..d89e23e 100644 (file)
@@ -1432,6 +1432,13 @@ Vide etiam [[Special:WantedCategories|categorias desideratas]].',
 'listusers-noresult' => 'Nullus usor inventus.',
 'listusers-blocked' => '(obstructus)',
 
+# Special:ActiveUsers
+'activeusers' => 'Index usorum activorum',
+'activeusers-count' => '{{PLURAL:$1|una recensio recens|$1 recensiones recentes}} {{PLURAL:$3|die proximo|in diebus $3 proximis}}',
+'activeusers-hidebots' => 'Celare automata',
+'activeusers-hidesysops' => 'Celare magistratus',
+'activeusers-noresult' => 'Nullus usor inventus.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Gregum usorum potestates',
 'listgrouprights-group' => 'Grex',
index 44c4e21..a507ab3 100644 (file)
@@ -599,7 +599,7 @@ Vergiesst net fir Är [[Special:Preferences|{{SITENAME}} Astellungen]] z'ännere
 'yourname' => 'Benotzernumm:',
 'userlogin-yourname' => 'Benotzernumm',
 'userlogin-yourname-ph' => 'Gitt Äre Benotzernumm an',
-'createacct-helpusername-url' => '{{ns:Project}}:Benotzernumm Richtlinnen',
+'createacct-helpusername-url' => '{{ns:Project}}:Benotzernumm Richtlinn',
 'createacct-helpusername-link' => '[[{{MediaWiki:createacct-helpusername-url}}|(hëlleft mir beim Eraussichen)]]',
 'yourpassword' => 'Passwuert:',
 'userlogin-yourpassword' => 'Passwuert',
@@ -644,7 +644,7 @@ Vergiesst net fir Är [[Special:Preferences|{{SITENAME}} Astellungen]] z'ännere
 'createacct-reason-ph' => 'Fir wat Dir een anere Benotzerkonnt uleet',
 'createacct-captcha' => 'Sécherheets-Check',
 'createacct-captcha-help-url' => '{{ns:Project}}:E Benotzerkont ufroen',
-'createacct-imgcaptcha-help' => "Dir kënnt D'bild net gesinn? [[{{MediaWiki:createacct-captcha-help-url}}|Frot e Benotzerkont]]",
+'createacct-imgcaptcha-help' => "Dir kënnt d'Bild net gesinn? [[{{MediaWiki:createacct-captcha-help-url}}|Frot e Benotzerkont]]",
 'createacct-imgcaptcha-ph' => 'Gitt den Text an deen Dir hei driwwer gesitt',
 'createacct-submit' => 'Äre Benotzerkont uleeën',
 'createacct-benefit-heading' => '{{SITENAME}} gëtt vu Leit wéi Iech gemaach.',
@@ -1418,6 +1418,7 @@ Si muss manner wéi $1 {{PLURAL:$1|Zeechen|Zeechen}} hunn.',
 'userrights-notallowed' => "Äre Benotzerkont hutt net déi néideg Rechter fir d'Rechter vun anere Benotzer z'änneren.",
 'userrights-changeable-col' => 'Gruppen déi Dir ännere kënnt',
 'userrights-unchangeable-col' => 'Gruppen déi Dir net ännere kënnt',
+'userrights-conflict' => 'Konflikt bäi de Benotzerrechter! Maacht Är Ännerunge w.e.g. nach eng Kéier.',
 
 # Groups
 'group' => 'Grupp:',
@@ -2133,6 +2134,15 @@ Et muss mindestens en Top-Level-Domaine ugi ginn, wéi z. Bsp. ".org".<br />
 'listusers-noresult' => 'Kee Benotzer fonnt.',
 'listusers-blocked' => '(gespaart)',
 
+# Special:ActiveUsers
+'activeusers' => 'Lëscht vun den aktive Benotzer',
+'activeusers-intro' => 'Dëst ass eng Lëscht vun de Benotzer déi op iergend eng Manéier an de leschten $1 {{PLURAL:$1|Dag|Deeg}} aktiv waren.',
+'activeusers-count' => '$1 {{PLURAL:$1|Aktioun|Aktiounen}} {{PLURAL:$3|gëschter|an de leschten $3 Deeg}}',
+'activeusers-from' => 'Benotzer weisen, ugefaang bäi:',
+'activeusers-hidebots' => 'Botte verstoppen',
+'activeusers-hidesysops' => 'Administrateure verstoppen',
+'activeusers-noresult' => 'Keng Benotzer fonnt.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Rechter vun de Benotzergruppen',
 'listgrouprights-summary' => 'Dëst ass eng Lëscht vun den op dëser Wiki definéierte Benotzergruppen an den domat verbonnene Rechter.
@@ -3068,6 +3078,7 @@ Duerch d'Opmaache vum Fichier kann Äre System beschiedegt ginn.",
 'file-info-png-repeat' => 'gouf $1 {{PLURAL:$1|mol|mol}} gespillt',
 'file-info-png-frames' => '$1 {{PLURAL:$1|Frame|Framen}}',
 'file-no-thumb-animation' => "''''Informatioun: Wéinst technesche Limitatioune sinn d'Miniatur-Biller vun dësem Fichier net animéiert.'''",
+'file-no-thumb-animation-gif' => "'''Hiweis:Aus technesche Grënn gi Miniature mat enger héijer Opléisung vu GIF Biller, esou wéi dëst, net animéiert.'''",
 
 # Special:NewFiles
 'newimages' => 'Gallerie vun den neie Biller',
@@ -3291,6 +3302,7 @@ Déi aner sinn am Standard verstoppt.
 'exif-copyrightowner' => "Titulaire vun den Droits d'auteur",
 'exif-usageterms' => 'Benotzungsbedingungen',
 'exif-webstatement' => 'Omline Copyright Deklaratioun',
+'exif-originaldocumentid' => 'Identifikatiounsnummer vum Original-Dokument',
 'exif-licenseurl' => 'URL vum Copyright (Lizenz)',
 'exif-morepermissionsurl' => 'Alternativ Lizenzinformatiounen',
 'exif-attributionurl' => 'Wann dëst Wierk weiderbenotzt gëtt, da linkt w.e.g. op',
@@ -3703,6 +3715,7 @@ Dir misst eng [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun der GNU General Public
 'version-entrypoints-header-entrypoint' => 'Agangspunkt',
 'version-entrypoints-header-url' => 'URL',
 
+'redirect-legend' => 'Viruleedung op ee Fichier oder eng Säit',
 'redirect-submit' => 'Lass',
 'redirect-lookup' => 'Nosichen:',
 'redirect-value' => 'Wäert:',
index 955e57c..50d4d30 100644 (file)
@@ -1733,6 +1733,14 @@ Skatīt arī [[Special:WantedCategories|''sarkanās'' kategorijas]].",
 'listusers-noresult' => 'Neviens lietotājs nav atrasts.',
 'listusers-blocked' => '(bloķēts)',
 
+# Special:ActiveUsers
+'activeusers' => 'Aktīvo lietotāju saraksts',
+'activeusers-intro' => 'Šis ir lietotāju saraksts, kas veikuši kādu darbību {{PLURAL:daudzskaitlī:$1|pēdējā|pēdējās}} $1 {{PLURAL:daudzskaitlī:$1|dienā|dienās}}.',
+'activeusers-from' => 'Parādīt lietotājus sākot ar:',
+'activeusers-hidebots' => 'Paslēpt botus',
+'activeusers-hidesysops' => 'Paslēpt administratorus',
+'activeusers-noresult' => 'Neviens lietotājs nav atrasts.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Lietotāju grupu tiesības',
 'listgrouprights-summary' => 'Šis ir šajā wiki definēto lietotāju grupu uskaitījums, kopā ar tām atbilstošajām piekļuves tiesībām.
index 54dfbda..3db21e5 100644 (file)
@@ -1762,6 +1762,15 @@ $1',
 'listusers-noresult' => '尋無簿。',
 'listusers-blocked' => '(已禁)',
 
+# Special:ActiveUsers
+'activeusers' => '躍簿',
+'activeusers-intro' => '此乃為近$1天內之躍簿也。',
+'activeusers-count' => '$3天內之$1易',
+'activeusers-from' => '示簿始於:',
+'activeusers-hidebots' => '藏僕',
+'activeusers-hidesysops' => '藏有秩',
+'activeusers-noresult' => '無簿矣。',
+
 # Special:ListGroupRights
 'listgrouprights' => '權任一覽',
 'listgrouprights-summary' => '此所列述,諸職所司也,各有異同。欲知其詳,請閱[[{{MediaWiki:Listgrouprights-helppage}}|此文]]。',
index 5a4921f..2f373d6 100644 (file)
@@ -793,6 +793,12 @@ $messages = array(
 'listusers-submit' => 'ончыкташ',
 'listusers-blocked' => '(йӧн петырыме)',
 
+# Special:ActiveUsers
+'activeusers' => 'Чӱчкыдын пайдаланыше-влак',
+'activeusers-count' => 'Пытартыш $3 {{PLURAL:$3|кечыште|кечылаште}} $1 {{PLURAL:$1|тӧрлатымаш|тӧрлатымаш-влак}}',
+'activeusers-hidebots' => 'Бот-влакым шылташ',
+'activeusers-hidesysops' => 'Сайтвиктарыше-влакым шылташ',
+
 # Special:ListGroupRights
 'listgrouprights-members' => '(тӱшкаште улшо-влак)',
 
index 7ac7410..0d9d997 100644 (file)
@@ -178,7 +178,7 @@ $messages = array(
 'vector-action-delete' => 'Hapuih',
 'vector-action-move' => 'Pindahkan',
 'vector-action-protect' => 'Linduangkan',
-'vector-action-undelete' => 'Pambatalan panghapuihan',
+'vector-action-undelete' => 'Pambatalan pangapuihan',
 'vector-action-unprotect' => 'Tuka palinduangan',
 'vector-simplesearch-preference' => 'Aktipan kotak pancarian sadarano (hanyo kulik Vector)',
 'vector-view-create' => 'Buek',
@@ -388,7 +388,7 @@ Indak ado keterangan.',
 'badtitle' => 'Judul indak sah',
 'badtitletext' => 'Pamintaan judul laman indak sah, kosong, atau antarbaso atau antarwiki nan salah sambuang. Mungkin juo ado kandungan karakter nan indak buliah digunoan untuak judul.',
 'perfcached' => 'Data barikuik ko diambiak dari singgahan dan mungkin indak data nan baru. Nan tabanyak dari {{PLURAL:$1|$1 hasilnyo}} ado di singgahan.',
-'perfcachedts' => 'Data barikuik ko singgahan, dan tarakhia dipabarui $1. Nan tabanyak dari {{PLURAL:$1|$1 hasilnyo}} ado di singgahan.',
+'perfcachedts' => 'Data barikuik ko singgahan, dan tarakhia dipabarui tanggal $1. Nan tabanyak dari tanggal {{PLURAL:$1|$1}}, hasilnyo ado di singgahan.',
 'querypage-no-updates' => 'Pamutakhiran dari laman ko sadang dimatian. Data nan ado di siko kini ko indak akan dimuaik ulang.',
 'wrong_wfQuery_params' => 'Parameter salah ka wfQuery()<br />Fungsi: $1<br />Pamintaan: $2',
 'viewsource' => 'Caliak sumber',
@@ -435,7 +435,7 @@ Parhatian bahawa bara laman mungkin masih taruih manunjukkan bahawa Sanak masih
 'yourname' => 'Namo pangguno:',
 'userlogin-yourname' => 'Namo pangguno',
 'userlogin-yourname-ph' => 'Masuakan namo pangguno',
-'createacct-helpusername-url' => '{{ns:Project}}:Namo pangguno',
+'createacct-helpusername-url' => '{{ns:Project}}:Kabijakan namo pangguno',
 'createacct-helpusername-link' => '[[{{MediaWiki:createacct-helpusername-url}}|(piliahan namo pangguno)]]',
 'yourpassword' => 'Kato sandi:',
 'userlogin-yourpassword' => 'Kato sandi',
@@ -445,7 +445,7 @@ Parhatian bahawa bara laman mungkin masih taruih manunjukkan bahawa Sanak masih
 'createacct-yourpasswordagain' => 'Konfirmasi kato sandi',
 'createacct-yourpasswordagain-ph' => 'Masuakan lai kato sandi',
 'remembermypassword' => 'Ingek log masuak denai di paramban ko (salamo $1 {{PLURAL:$1|hari}})',
-'userlogin-remembermypassword' => 'Ingek denai',
+'userlogin-remembermypassword' => 'Biakan ambo tetap masuak',
 'userlogin-signwithsecure' => 'Masuak log jo server aman',
 'securelogin-stick-https' => 'Tetap tahubuang ka HTTPS sasudah masuk log',
 'yourdomainname' => 'Domain Sanak:',
@@ -477,14 +477,16 @@ Parhatian bahawa bara laman mungkin masih taruih manunjukkan bahawa Sanak masih
 'createacct-realname' => 'Namo asli (opsional)',
 'createaccountreason' => 'Alasan:',
 'createacct-reason' => 'Alasan',
+'createacct-reason-ph' => 'Manga Sanak mambuek akun lain',
 'createacct-captcha' => 'Pamarisoan kaamanan',
 'createacct-captcha-help-url' => '{{ns:Project}}:Mohon buekkan akun',
 'createacct-imgcaptcha-help' => 'Indak dapek mancaliak gambar? [[{{MediaWiki:createacct-captcha-help-url}}|Mohon buekkan akun]]',
 'createacct-imgcaptcha-ph' => 'Masuakan teks nan Sanak caliak di ateh',
+'createacct-submit' => 'Buek akun Sanak',
 'createacct-benefit-heading' => '{{SITENAME}} dibuek dek urang-urang saroman Sanak.',
 'createacct-benefit-body1' => 'suntiangan',
 'createacct-benefit-body2' => 'laman',
-'createacct-benefit-body3' => 'kontributor bulan ko',
+'createacct-benefit-body3' => 'kontributor tarakhia',
 'badretype' => 'Kato sandi nan Sanak masuakan salah.',
 'userexists' => 'Namo pangguno nan dipiliah alah tapakai.
 Piliah namo nan lain.',
@@ -575,6 +577,7 @@ Kini mamproses masuak log Sanak...',
 'resetpass-wrong-oldpass' => 'Kato sandi indak sah.
 Sanak mungkin alah berhasil mangganti kato sandi Sanak atau alah maminto kato sandi samantaro nan baharu.',
 'resetpass-temp-password' => 'Kato sandi samantaro:',
+'resetpass-abort-generic' => 'Parubahan kato sandi alah dibatalan dek ekstensi.',
 
 # Special:PasswordReset
 'passwordreset' => 'Setel ulang sandi',
@@ -589,25 +592,24 @@ Sanak mungkin alah berhasil mangganti kato sandi Sanak atau alah maminto kato sa
 'passwordreset-capture-help' => 'Kalau sanak mancentang kotak ko, surel (jo kato sandi samantaro) akan nampak jo Sanak.',
 'passwordreset-email' => 'Alamaik surel:',
 'passwordreset-emailtitle' => 'Detail akun di {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Sasaurang (mungkin Sanak, dari alamaik IP $1) maminta pangingek
-detil akun untuak {{SITENAME}} ($4). {{PLURAL:$3|Akun}} barikuik takaik jo alamaik surel iko:
+'passwordreset-emailtext-ip' => 'Sasaurang (mungkin Sanak, dari alamaik IP $1) mamintak parubahan kato sandi untuak {{SITENAME}} ($4). {{PLURAL:$3|Akun}} barikuik takaik jo alamaik surel ko:
 
 $2
 
-{{PLURAL:$3|Sandi samantaro}} barikuik akan kadaluwarsa dalam {{PLURAL:$5|$5 hari}}.
-Sanak harus masuak dan mamiliah sandi baru. Jikok urang lain mambuek pamintaan ko atau jikok Sanak ingek sandi awal dan indak nio maubahnyo, Sanak dapek mangacuahkan pasan ko dan taruih manggunoan sandi lamo.',
-'passwordreset-emailtext-user' => 'Sasaurang (mungkin Sanak, dari alamaik IP $1) maminta pangingek detil akun untuak {{SITENAME}} ($4).
+{{PLURAL:$3|Sandi samantaro}} barikuik akan habih masonyo dalam {{PLURAL:$5|$5 ari}}.
+Sanak harus masuak dan mamiliah sandi baru. Jikok urang lain mambuek pamintaan ko atau jikok Sanak ingek sandi awal dan indak nio maubahnyo, Sanak dapek mangacuahkan pasan ko dan taruih manggunoan kato sandi lamo.',
+'passwordreset-emailtext-user' => 'Sasaurang (mungkin Sanak, dari alamaik IP $1) mamintak parubahan kato sandi untuak {{SITENAME}} ($4).
 {{PLURAL:$3|Akun}} barikuik takaik jo alamaik surel ko:
 
 $2
 
-{{PLURAL:$3|Sandi samantaro}} barikuik akan kadaluwarsa dalam {{PLURAL:$5|$5 hari}}.
-Sanak harus masuak dan mamiliah sandi baru. Jikok urang lain mambuek pamintaan ko atau jikok Sanak ingek sandi awal dan indak nio maubahnyo, Sanak dapek mangacuahkan pasan ko dan taruih manggunoan sandi lamo.',
+{{PLURAL:$3|Sandi samantaro}} barikuik akan habih masonyo dalam {{PLURAL:$5|$5 ari}}.
+Sanak harus masuak dan mamiliah sandi baru. Jikok urang lain mambuek pamintaan ko atau jikok Sanak ingek sandi awal dan indak nio maubahnyo, Sanak dapek mangacuahkan pasan ko dan taruih manggunoan kato sandi lamo.',
 'passwordreset-emailelement' => 'Namo pangguno: $1
 Sandi samantaro: $2',
 'passwordreset-emailsent' => 'Surel parubahan kato sandi alah dikirim.',
-'passwordreset-emailsent-capture' => 'Surel paringatan alah dikirim, nan nampak di bawah ko.',
-'passwordreset-emailerror-capture' => 'Surel pangingek, nan ditampilkan di bawah, alah dibuek, tapi pengirimannyo gagal ka pangguno: $1',
+'passwordreset-emailsent-capture' => 'Surel parubahan kato sandi alah dikirim, nan nampak di bawah ko.',
+'passwordreset-emailerror-capture' => 'Surel parubahan kato sandi nan ditampilan di bawah, alah dibuek, tapi pangirimannyo ka {{GENDER:$2|pangguno}} gagal: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'Tuka alamaik surel.',
@@ -716,8 +718,9 @@ Sanak dapek [[Special:Search/{{PAGENAME}}|malakukan pancarian untuak judul laman
 
 Hal iko biasonyo disababkan dek pautan sijarah nan alah kadaluarsa ka laman nan alah diapuih.
 Rinciannyo dapek dicaliak di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pangapuihan].',
-'userpage-userdoesnotexist' => 'Akun pangguno "<nowiki>$1</nowiki>" indak tadafta.',
-'userpage-userdoesnotexist-view' => 'Pangguno "$1" indak tadafta.',
+'userpage-userdoesnotexist' => 'Akun pangguno "$1" indak tadaftar.
+Cubo pareso jikok nio mambuek/suntiang laman ko.',
+'userpage-userdoesnotexist-view' => 'Pangguno "$1" indak tadaftar.',
 'blocked-notice-logextract' => 'Pangguno ko tangah diblokir.
 Entri log pamblokiran tabaru disadioan di bawah ko untuak referensi:',
 'clearyourcache' => "'''Catatan:''' Sasudah menyimpan, Sanak mungkin harus meminteh singgahan paramban Sanak untuak maliek parubahan.
@@ -784,8 +787,8 @@ Sanak mungkin paralu manyalin teks suntiangan Sanak ko dan simpankan ka sabuah b
 Panguruih nan mangunci basis data maagiahan panjalehan barikuik: $1",
 'protectedpagewarning' => "'''Paringatan: Laman iko sadang dilinduangi sahinggo hanyo pangguno jo hak akses pangurus nan dapek manyuntiangnyo.'''
 Entri catatan tarakhir disadioan di bawah untuak referensi:",
-'semiprotectedpagewarning' => "'''Paringatan: Laman iko sadang dilinduangi sahinggo hanyo pangguno tadafta nan bisa manyuntiangnyo.'''
-Entri catatan tarakhir disadioan di bawah untuak referensi:",
+'semiprotectedpagewarning' => "'''Catatan:''' Laman ko sadang dilinduangi, jadi hanyo pangguno tadaftar nan dapek manyuntiangnyo.
+Entri log tarakhia disadioan di bawah untuak reperensi:",
 'cascadeprotectedwarning' => "'''Paringatan:''' Laman ko sadang dilinduangi jadi hanyo pangguno jo hak akses panguruih sajo nan dapek manyuntiangnyo karano disaratoan dalam {{PLURAL:$1|laman}} nan alah dilinduangi jo palinduangan batingkek:",
 'titleprotectedwarning' => "'''Paringatan: Laman iko alah dilinduangi sahinggo diparaluan [[Special:ListGroupRights|hak khusus]] untuak mambueknyo.'''
 Entri catatan tarakhir disadioan di bawah untuak referensi:",
@@ -806,9 +809,9 @@ Sanak dapek baliak dan manyuntiang laman nan alah ado, atau [[Special:UserLogin|
 'recreate-moveddeleted-warn' => "'''Ingek: Sanak mambuek ulang suatu laman nan alah dihapuih.'''
 
 Harap ditimbang apo rancak malanjuikan suntiangan Sanak.
-Barikuik ko log panghapuihan jo pamindahan dari laman ko:",
+Barikuik ko log pangapuihan jo pamindahan dari laman ko:",
 'moveddeleted-notice' => 'Laman ko alah dihapuih.
-Sabagai referensi, barikuik adolah log panghapuihan dan pamindahannyo.',
+Sabagai reperensi, barikuik adolah log pangapuihan dan pamindahannyo.',
 'log-fulllog' => 'Liek saluruah log',
 'edit-hook-aborted' => 'Suntiangan dibatalan samo kait parser
 tanpa ado katarangan.',
@@ -879,7 +882,7 @@ Alasan nan diagiah jo $3 adolah ''$2''",
 'next' => 'lanjuik',
 'last' => 'sabalun',
 'page_first' => 'awal',
-'page_last' => 'akhir',
+'page_last' => 'akhia',
 'histlegend' => "Bandiangkan pilihan: Tandoi revisi untuak mambandiangkan dan takan enter atau tombol di bawah.<br />
 Contoh: '''({{int:cur}})''' = bedo jo versi tarakhia, '''({{int:last}})''' = bedo jo versi sabalunnyo, '''{{int:minoreditletter}}''' = suntiangan ketek.",
 'history-fieldset-title' => 'Talusuri riwayaik',
@@ -903,28 +906,28 @@ Cuba [[Special:Search|cari dulu]] untuak laman lain nan relevan.',
 'rev-deleted-event' => '(isi dihapuih)',
 'rev-deleted-user-contribs' => '[namo pangguno atau alamaik IP dihapuih - suntiangan disuruakan dari daftar jariah]',
 'rev-deleted-text-permission' => "Revisi laman ko alah '''dihapuih'''.
-Rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log panghapuihan]",
+Rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pangapuihan]",
 'rev-deleted-text-unhide' => "Revisi laman ko alah '''dihapuih'''.
-Rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapuihan].
-Angku masih dapek [$1 maliek revisi ko] ko' amuah.",
+Rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pangapuihan].
+Sanak masih dapek [$1 mancaliak revisi ko] ko' amuah.",
 'rev-suppressed-text-unhide' => "Revisi laman ko alah '''tabanam'''.
 Rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log pambanaman].
 Angku masih dapek [$1 maliek revisi ko] ko' amuah.",
 'rev-deleted-text-view' => "Laman revisi ko alah '''dihapuih'''.
-Angku dapek mancaliaknyo; rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapuihan].",
+Sanak dapek mancaliaknyo; rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pangapuihan].",
 'rev-suppressed-text-view' => "Revisi laman ko alah '''tabanam'''.
 Angku dapek malieknyo; rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambanaman]",
-'rev-deleted-no-diff' => "Angku indak dapek maliek pabedoan ko dek salah satu dari revisinyo alah '''dihapuih'''.
-Rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapuihan].",
+'rev-deleted-no-diff' => "Sanak indak dapek mancaliak pabedoan ko dek salah satu dari revisi ko alah '''dihapuih'''.
+Rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pangapuihan].",
 'rev-suppressed-no-diff' => "Angku indak dapek maliek pabedoan ko dek salah satu dari revisinyo alah '''dihapuih'''.",
 'rev-deleted-unhide-diff' => "Revisi laman ko alah '''dihapuih'''.
-Rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapuihan].
-Sanak masih dapek [$1 maliek revisi ko] ko' amuah.",
+Rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pangapuihan].
+Sanak masih dapek [$1 mancaliak revisi ko] ko' amuah.",
 'rev-suppressed-unhide-diff' => "Revisi laman ko alah '''tabanam'''.
 Rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log pambanaman].
 Sanak masih dapek [$1 maliek revisi ko] ko' amuah.",
 'rev-deleted-diff-view' => "Laman revisi ko alah '''dihapuih'''.
-Sanak dapek mancaliaknyo; rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log penghapuihan].",
+Sanak dapek mancaliaknyo; rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pangapuihan].",
 'rev-suppressed-diff-view' => "Revisi laman ko alah '''tabanam'''.
 Sanak dapek malieknyo; rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pambanaman]",
 'rev-delundel' => 'tampilkan/suruakkan',
@@ -1043,11 +1046,11 @@ Ingek indeks Google untuak {{SITENAME}} mungkin lah kadaluarsa.',
 'skin-preview' => 'Caliak',
 'datedefault' => 'Indak usah diatua',
 'prefs-beta' => 'Baru uji-cubo (Beta)',
-'prefs-datetime' => 'Tangga jo wakatu',
+'prefs-datetime' => 'Tanggal jo wakatu',
 'prefs-labs' => 'Alaik uji',
 'prefs-user-pages' => 'Laman pangguno',
 'prefs-personal' => 'Profil pangguno',
-'prefs-rc' => 'Parubahan tabaru',
+'prefs-rc' => 'Parubahan baru',
 'prefs-watchlist' => 'Daftar pantau',
 'prefs-watchlist-days' => 'Jumlah hari dalam daftar pantau:',
 'prefs-watchlist-days-max' => 'Maksimum $1 {{PLURAL:$1|hari}}',
@@ -1144,9 +1147,9 @@ Alamaik surel Sanak indakkan tau dek urang nan manghubuangi sanak tu.',
 'prefs-advancedrendering' => 'Piliahan lanjuik',
 'prefs-advancedsearchoptions' => 'Piliahan lanjuik',
 'prefs-advancedwatchlist' => 'Piliahan lanjuik',
-'prefs-displayrc' => 'Pilihan tampilan',
-'prefs-displaysearchoptions' => 'Pilihan tampilan',
-'prefs-displaywatchlist' => 'Pilihan tampilan',
+'prefs-displayrc' => 'Piliahan tampilan',
+'prefs-displaysearchoptions' => 'Piliahan tampilan',
+'prefs-displaywatchlist' => 'Piliahan tampilan',
 'prefs-diffs' => 'Pabedoan',
 
 # User preference: email validation using jQuery
@@ -1214,7 +1217,21 @@ Alamaik surel Sanak indakkan tau dek urang nan manghubuangi sanak tu.',
 'right-upload' => 'Mamuek berkas',
 'right-reupload' => 'Manimpo berkas lamo',
 'right-reupload-own' => 'Manimpo berkas nan dimuek surang',
+'right-autoconfirmed' => 'Manyuntiang laman palinduangan semi',
+'right-bot' => 'Dipalakuan sabagai proses otomatis',
+'right-nominornewtalk' => 'Indak ado tando suntiangan ketek di laman rundiang mamicu pasan baru',
+'right-apihighlimits' => 'Manggunoan bateh labiah tinggi dalam kueri API',
+'right-writeapi' => 'Manggunoan panulisan API',
+'right-delete' => 'Mangapuih laman',
 'right-suppressionlog' => 'Mancaliak log privat',
+'right-unblockself' => 'Malapehan sakek diri surang',
+'right-editinterface' => 'Manyuntiang antarmuko pangguno',
+'right-editusercss' => 'Manyuntiang berkas CSS pangguno lain',
+'right-edituserjs' => 'Manyuntiang berkas JS pangguno lain',
+'right-noratelimit' => 'Indak dipangaruahi jo pambatehan jumlah suntiangan',
+'right-import' => 'Mangimpor laman dari wiki lain',
+'right-importupload' => 'Mangimpor laman dari berkas nan dimuek',
+'right-autopatrol' => 'Suntiangan surang sacaro otomatis ditandoi tapantau',
 
 # Special:Log/newusers
 'newuserlogpage' => 'Log pangguno baru',
@@ -1222,6 +1239,7 @@ Alamaik surel Sanak indakkan tau dek urang nan manghubuangi sanak tu.',
 
 # User rights log
 'rightslog' => 'Log parubahan hak akses',
+'rightslogtext' => 'Di bawah ko daftar log parubahan pado hak-hak pangguno.',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'baco laman ko',
@@ -1230,6 +1248,14 @@ Alamaik surel Sanak indakkan tau dek urang nan manghubuangi sanak tu.',
 'action-createtalk' => 'buek laman diskusi',
 'action-createaccount' => 'buek akun pangguno ko',
 'action-minoredit' => 'tandoi sabagai suntiangan ketek',
+'action-move' => 'pindahkan laman ko',
+'action-move-subpages' => 'pindahkan laman ko, jo sublamannyo',
+'action-move-rootuserpages' => 'pindahkan laman pangguno',
+'action-movefile' => 'pindahkan berkas ko',
+'action-upload' => 'muek berkas ko',
+'action-reupload' => 'timpo berkas lamo',
+'action-writeapi' => 'manggunoan panulisan API',
+'action-import' => 'impor laman ko dari wiki lain',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|parubahan}}',
@@ -1243,12 +1269,12 @@ Alamaik surel Sanak indakkan tau dek urang nan manghubuangi sanak tu.',
 'recentchanges-label-unpatrolled' => 'Suntiangan ko alun dipatroli',
 'rcnote' => "Berikuik ko {{PLURAL:$1|'''$1'''}} parubahan dalam {{PLURAL:$2|'''$2''' hari}} tarakhia, sampai $4, pukul $5.",
 'rcnotefrom' => "Di bawah ko ado parubahan mulai dari '''$2''' (sampai '''$1''' parubahan).",
-'rclistfrom' => 'Tampilkan parubahan baru mulai dari $1',
+'rclistfrom' => 'Tunjuakan parubahan baru mulai dari tanggal $1',
 'rcshowhideminor' => '$1 suntiangan ketek',
 'rcshowhidebots' => '$1 bot',
 'rcshowhideliu' => '$1 pangguno masuak log',
 'rcshowhideanons' => '$1 pangguno anon',
-'rcshowhidepatr' => '$1 suntiangan nan tajago',
+'rcshowhidepatr' => '$1 suntiangan tapatroli',
 'rcshowhidemine' => '$1 suntiangan denai',
 'rclinks' => 'Tunjuakan $1 parubahan tabaru dalam $2 hari tarakhia<br />$3',
 'diff' => 'bedo',
@@ -1283,9 +1309,9 @@ Laman pado [[Special:Watchlist|daftar pantauan Sanak]] ditandoi jo '''cetak taba
 'uploaderror' => 'Kasalahan pamuatan',
 'upload-recreate-warning' => "'''Paringatan: Berkas jo namo tu alah dihapuih atau dipindahan.'''
 
-Log panghapuihan dan pamindahan laman ko adolah sabagai barikuik:",
+Log pangapuihan dan pamindahan laman ko adolah sabagai barikuik:",
 'uploadtext' => "Gunoan formulir di bawah ko untuak mangunggah berkas.
-Untuak manampilan atau mancari berkas nan sabalumnyo dimuek, gunoan [[Special:FileList|daftar berkas]]. Pangunggahan (ulang) tacatat dalam [[Special:Log/upload|log pangunggahan]], samantaro panghapuihan tacatat dalam [[Special:Log/delete|log panghapuihan]].
+Untuak manampilan atau mancari berkas nan sabalumnyo dimuek, gunoan [[Special:FileList|daftar berkas]]. Pangunggahan (ulang) tacatat dalam [[Special:Log/upload|log pangunggahan]], samantaro pangapuihan tacatat dalam [[Special:Log/delete|log pangapuihan]].
 
 Untuak manampilkan berkas pado suatu laman, gunoan salah satu format di bawah ko:
 * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Berkas.jpg]]</nowiki></code>''' untuak manampilan berkas dalam ukuran aslinyo
@@ -1320,7 +1346,7 @@ Koq berkas tu samemang marupoan gambar dalam ukuran aslinyo, Sanak indak paralu
 'file-thumbnail-no' => "Namo berkas dimulai jo <strong>$1</strong>.
 Nampaknyo berkas ko marupoan gambar jo ukuran dipaketek ''(miniatua)''.
 Koq Sanak ado versi resolusi panuah dari gambar ko, cubolah muekan berkas tasabuik. Koq indak, harap ubah namo berkas ko.",
-'uploadedimage' => 'muek "[[$1]]"',
+'uploadedimage' => 'mamuek "[[$1]]"',
 'upload-source' => 'Berkas sumber',
 'sourcefilename' => 'Namo berkas sumber:',
 'sourceurl' => 'URL sumber:',
@@ -1345,9 +1371,9 @@ Katiko disariang dek pangguno, hanyo versi berkas tabaru dari berkas nan diungga
 'listfiles' => 'Daftar berkas',
 'listfiles_thumb' => 'Miniatua',
 'listfiles_date' => 'Tanggal',
-'listfiles_name' => 'Namo',
+'listfiles_name' => 'Namo berkas',
 'listfiles_user' => 'Pangguno',
-'listfiles_size' => 'Ukuran',
+'listfiles_size' => 'Ukuaran',
 'listfiles_description' => 'Katarangan',
 'listfiles_count' => 'Versi',
 
@@ -1444,7 +1470,7 @@ Pariso dulu "pautan baliak" ka templat tasabuik sabalun manghapuihnyo.',
 'statistics-views-total' => 'Jumlah tampilan laman',
 'statistics-views-total-desc' => 'Tampilan ka laman nan indak ado jo laman khusus nan indak ikuik',
 'statistics-views-peredit' => 'Tampilan per-suntiangan',
-'statistics-users' => 'Jumlah [[Special:ListUsers|pangguno tadafta]]',
+'statistics-users' => 'Jumlah [[Special:ListUsers|pangguno tadaftar]]',
 'statistics-users-active' => 'Pangguno aktip',
 'statistics-users-active-desc' => 'Pangguno nan aktip dalam {{PLURAL:$1|$1 ari}} tarakhia.',
 'statistics-mostpopular' => 'Laman nan paliang banyak ditampilkan',
@@ -1459,6 +1485,7 @@ Laman nan dianggap sabagai laman disambiguasi jikok laman tasabuik manggunoan te
 'pageswithprop-legend' => 'Laman jo laman properti',
 'pageswithprop-text' => 'Laman ko barisi daftar laman nan manggunoan properti laman tatantu.',
 'pageswithprop-prop' => 'Namo properti:',
+'pageswithprop-submit' => 'Lanjuik',
 
 'doubleredirects' => 'Pangaliahan gando',
 'doubleredirectstext' => 'Laman ko mamuek daftar laman nan dialiahkan ka laman pangaliahan nan lain.
@@ -1510,7 +1537,7 @@ Judul laman nan <del>dicoret</del> bararti alah dipelokan.',
 'shortpages' => 'Laman pendek',
 'longpages' => 'Laman panjang',
 'deadendpages' => 'Laman buntu',
-'deadendpagestext' => 'Laman-laman ko indak ad pautan ka laman lain di {{SITENAME}}.',
+'deadendpagestext' => 'Laman-laman ko indak ado pautan ka laman lain di {{SITENAME}}.',
 'protectedpages' => 'Laman nan dilinduangi',
 'protectedpages-indef' => 'Untuak palinduangan salamonyo',
 'protectedpages-cascade' => 'Untuak palinduangan batingkek',
@@ -1525,7 +1552,7 @@ Judul laman nan <del>dicoret</del> bararti alah dipelokan.',
 'newpages-username' => 'Namo pangguno:',
 'ancientpages' => 'Laman paliang lamo',
 'move' => 'Pindah',
-'movethispage' => 'Pindahan laman ko',
+'movethispage' => 'Pindahkan laman ko',
 'unusedimagestext' => 'Berkas barikuik ko ado tapi indak takaik ka laman manopun.
 Harok paratian jikok laman web lain mungkin ado pautan ka suatu berkas jo URL langsuang, dan  masih tadaftar di siko walaupun indak aktif digunoan.',
 'unusedcategoriestext' => 'Kategori barikuik ado, tapi indak ado laman atau kategori lain nan manggunoannyo.',
@@ -1595,15 +1622,28 @@ Lihek pulo [[Special:WantedCategories|kategori nan diinginan]].',
 'listusers-noresult' => 'Pangguno indak basobok.',
 'listusers-blocked' => '(tasakek)',
 
+# Special:ActiveUsers
+'activeusers' => 'Daftar pangguno aktif',
+'activeusers-from' => 'Tunjuakan pangguno mulai dari:',
+'activeusers-hidebots' => 'Suruakan bot',
+'activeusers-hidesysops' => 'Suruakan panguruih',
+'activeusers-noresult' => 'Pangguno indak basobok',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Daftar kalompok pangguno',
 'listgrouprights-summary' => 'Barikuik ko adolah daftar kalompok pangguno nan ado di wiki ko, jo daftar hak aksesnyo masiang-masiang. Informasi labih lanjuik masalah hak masiang-masiang dapek dijumpoi di [[{{MediaWiki:Listgrouprights-helppage}}|laman bantuan hak pangguno]].',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Hak nan balaku</span>
+* <span class="listgrouprights-revoked">Hak nan dicabuik</span>',
 'listgrouprights-group' => 'Kalompok',
 'listgrouprights-rights' => 'Hak',
 'listgrouprights-helppage' => 'Help:Hak akses',
 'listgrouprights-members' => '(daftar anggota)',
 'listgrouprights-addgroup' => 'Manambahan {{PLURAL:$2|kalompok}}: $1',
+'listgrouprights-removegroup' => 'Mangapuih {{PLURAL:$2|kalompok}}: $1',
 'listgrouprights-addgroup-all' => 'Manambahan sado kalompok',
+'listgrouprights-removegroup-all' => 'Mangapuih kasado kalompok',
+'listgrouprights-removegroup-self' => 'Mengapuih {{PLURAL:$2|kalompok}} dari akun surang: $1',
+'listgrouprights-removegroup-self-all' => 'Mangapuih kasado kalompok dari akun surang',
 
 # Email user
 'emailuser' => 'Surel pangguno',
@@ -1637,23 +1677,36 @@ Parubahan laman ko tamasuak laman rundiangnyo akan ditampilan disinan.',
 'unwatch' => 'Batal pantau',
 'unwatchthispage' => 'Batal pantau laman ko',
 'watchlist-details' => '{{PLURAL:$1|$1 laman}} dalam daftar pantau Sanak, indak tamasuak laman rundiangnyo.',
-'wlshowlast' => 'Tampilkan $1 jam $2 hari tarakhia $3',
+'wlheader-showupdated' => "* Laman nan alah barubah sajak kunjuangan tarakhia Sanak ditunjuakan jo '''hurup taba'''",
+'wlnote' => "Di bawah ko ado $1 {{PLURAL:$1|parubahan}} dalam {{PLURAL:$2|'''$2''' jam}} iko, sampai tanggal $3, pukua $4.",
+'wlshowlast' => 'Tunjuakan $1 jam parubahan dalam $2 hari tarakhia $3',
 'watchlist-options' => 'Piliahan daftar pantau',
 
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Mamantau...',
 'unwatching' => 'indak dipantau le...',
 
+'enotif_reset' => 'Tandoi sado laman alah dibaco',
+'enotif_body_intro_restored' => 'Laman $1 pado {{SITENAME}} alah dikambalian tanggal $PAGEEDITDATE dek {{gender:$2|$2}}, caliak $3 untuak revisi tabaru.',
+
 # Delete
 'deletepage' => 'Hapuih laman',
 'confirm' => 'Konfirmasi',
+'excontent' => 'isi sabalunnyo: "$1"',
+'excontentauthor' => 'isinyo: "$1" (dan dibuek dek "[[Special:Contributions/$2|$2]]")',
+'exbeforeblank' => 'isi sabalun dikosongan: "$1"',
+'exblank' => 'laman kosong',
+'delete-confirm' => 'Hapuih "$1"',
+'delete-legend' => 'Hapuih',
+'historywarning' => "'''Paringatan:''' Laman nan ka dihapuih ado riwayaik jo $1 {{PLURAL:$1|revisi}}:",
 'confirmdeletetext' => 'Awak akan mahapuih laman atau berkas basamo riwayatnyo.
 Pastikan awak mainginkannyo, dan awak lah tahu sagalo akibatnyo dan sasuai jo [[{{MediaWiki:Policy-url}}|kebijakan]] yang balaku.',
 'actioncomplete' => 'Proses salasai',
 'actionfailed' => 'Proses gagal',
 'deletedtext' => '"$1" lah dihapuih.
 Caliak $2 untuak rakam jajak laman nan lah dihapuih.',
-'dellogpage' => 'Log penghapuihan',
+'dellogpage' => 'Log pangapuihan',
+'dellogpagetext' => 'Di bawah ko adolah log pangapuihan laman. Wakatu nan ditunjuakan adolah wakatu server.',
 'deletecomment' => 'Alasan:',
 'deleteotherreason' => 'Alasan lain/tambahan:',
 'deletereasonotherlist' => 'Alasan lain',
@@ -1736,6 +1789,7 @@ Awak dapek maubah tingkek perlindungannyo, walaupun indak pangaruah pado perlind
 'undeletebtn' => 'Baliakan',
 'undeletelink' => 'caliak/baliakan',
 'undeleteviewlink' => 'caliak',
+'undeletedrevisions' => '{{PLURAL:$1|$1 revisi}} dikambalian',
 'undelete-cleanup-error' => 'Kasalahan sawaktu mangapuih arsip berkas "$1" nan indak digunoan.',
 
 # Namespace form on various pages
@@ -1753,7 +1807,7 @@ Awak dapek maubah tingkek perlindungannyo, walaupun indak pangaruah pado perlind
 'month' => 'Dari bulan (dan sabalunnyo):',
 'year' => 'Dari taun (dan sabalunnyo):',
 
-'sp-contributions-newbies' => 'Tampilkan jariah pangguno baru sajo',
+'sp-contributions-newbies' => 'Tunjuakan jariah pangguno baru sajo',
 'sp-contributions-newbies-sub' => 'Untuak pangguno baru',
 'sp-contributions-newbies-title' => 'Jariah pangguno baru',
 'sp-contributions-blocklog' => 'log pamblokiran',
@@ -1850,9 +1904,9 @@ Caliak [[Special:BlockList|daftar sakek]] buek maninjaunyo.',
 'blocklist-tempblocks' => 'Suruakan sakek samantaro',
 'blocklist-addressblocks' => 'Suruakan ciek IP tasakek',
 'blocklist-rangeblocks' => 'Suruakan wilayah sakek',
-'blocklist-timestamp' => 'tando wakatu',
+'blocklist-timestamp' => 'Tanggal',
 'blocklist-target' => 'Target',
-'blocklist-expiry' => 'Kadaluwarsa',
+'blocklist-expiry' => 'Sampai',
 'blocklist-by' => 'Panguruih nan manyakek',
 'blocklist-params' => 'Parameter sakek',
 'blocklist-reason' => 'Alasan',
@@ -1901,7 +1955,7 @@ Caliak [[Special:BlockList|daftar sakek]] untuak kasado pangguno nan kini kanai
 
 # Move page
 'move-page' => 'Pindahan $1',
-'move-page-legend' => 'Pindahan laman',
+'move-page-legend' => 'Pindahkan laman',
 'movepagetext' => "Formulir di bawah ko digunoan untuak maubah namo suatu laman dan mamindahan sadonyo data riwayaik ka namo baru. 
 Judua lamo tu ka manjadi laman paraliahan manuju judua nan baru. 
 Awak dapek mampabarui paraliahan-paraliahan nan manuju ka judua lamo sacaro otomatis.
@@ -1911,6 +1965,15 @@ Ingeklah bahaso laman ko '''indak''' ka bapindah apobilo lah ado laman nan mangg
 
 '''Paringatan!''' 
 Iko dapek maakibaikan parubahan nan indak dipakiroan pado laman nan populer; jadi pastikan awak paham akibaik tindakan ko sabalun malanjuikannyo.",
+'movepagetext-noredirectfixer' => "Formulir di bawah ko digunoan untuak maubah namo suatu laman dan mamindahan sado data riwayaiknyo ka namo baru. 
+Judul lamo tu ka manjadi laman paraliahan manuju judul nan baru. 
+Sanak dapek mampabarui paraliahan-paraliahan nan manuju ka judul lamo sacaro otomatih.
+Kok indak dipabarui sacaro otomatih, pastikan lah dipareso laman ko dari [[Special:DoubleRedirects|paraliahan ganda]] atau [[Special:BrokenRedirects|paralihan rusak]]. Sanak batangguang-jawek untuak mamastian pautan tu taruih manyambuang ka laman nan saaruihnyo.
+
+Ingeklah bahaso laman ko '''indak''' ka bapindah apobilo lah ado laman nan manggunoan judul nan baru tu, kacuali bilo laman tu kosong atau marupoan laman paraliahan dan indak punyo riwayaik suntiangan. Aratinyo Sanak dapek maubah baliak namo laman ka namo samulo apobilo ado kasalahan, dan Sanak indak dapek manimpo laman nan lah ado.
+
+'''Paringatan!''' 
+Iko dapek maakibaikan parubahan nan indak dipakiroan pado laman nan populer; jadi pastikan Sanak paham akibaik tindakan ko sabalun malanjuikannyo.",
 'movepagetalktext' => "Laman diskusi nan bakaitan akan dipindahkan sacaro otomatis '''kacuali apobilo:'''
 
 *Sabuah laman diskusi nan indak kosong lah ado pado judul baru, atau
@@ -1919,14 +1982,14 @@ Iko dapek maakibaikan parubahan nan indak dipakiroan pado laman nan populer; jad
 Dalam kasus tu, kok amuah Angku dapek mamindahkan ataupun manggabuangkan laman sacaro manual.",
 'movearticle' => 'Pindahkan laman',
 'movenologin' => 'Alun masuak log',
-'movenologintext' => 'Sanak musti pangguno tadafta dan [[Special:UserLogin|masuak lo]] untuak mamindahan laman.',
+'movenologintext' => 'Sanak musti pangguno tadaftar dan [[Special:UserLogin|masuak log]] untuak mamindahan laman.',
 'movenotallowed' => 'Sanak indak ado izin untuak mamindahan laman.',
 'movenotallowedfile' => 'Sanak indak ado izin untuak mamindahan berkas.',
 'cant-move-user-page' => 'Sanak indak ado izin untuak mamindahan laman pangguno (bagian dari sub laman).',
 'cant-move-to-user-page' => 'Sanak indak ado izin untuak mamindahan laman ka laman pangguno (salain ka sub laman pangguno).',
 'newtitle' => 'Ka judul baru:',
 'move-watch' => 'Pantau laman ko',
-'movepagebtn' => 'Pindahan laman',
+'movepagebtn' => 'Pindahkan laman',
 'pagemovedsub' => 'Pamindahan berhasil',
 'movepage-moved' => '\'\'\'"$1" lah dipindahan ka "$2"\'\'\'',
 'movepage-moved-redirect' => 'Pangaliahan lah dibuek.',
@@ -1936,12 +1999,13 @@ Silakan piliah namo lain.',
 'cantmove-titleprotected' => 'Sanak indak dapek mamindahan laman kasiko dek judul barunyo kanai linduang dari dibuek',
 'talkexists' => "'''Laman tasabuik barasil dipindahan, tapi laman rundiangnyo indak dapek dipindahan dek lah ado laman rundiang disinan. Silakan digabuang laman rundiang tu sacaro manual.'''",
 'movedto' => 'pindahan ka',
-'movetalk' => 'Pindahan laman rundiang nan takaik',
-'move-subpages' => 'Pindahan sub laman (sampai $1)',
-'move-talk-subpages' => 'Pindahan sub laman dari laman rundiang (sampai $1)',
+'movetalk' => 'Pindahkan laman rundiang nan takaik',
+'move-subpages' => 'Pindahkan sublaman (sampai $1)',
+'move-talk-subpages' => 'Pindahkan sublaman dari laman rundiang (sampai $1)',
 'movelogpage' => 'Log pamindahan',
 'movereason' => 'Alasan:',
 'revertmove' => 'baliakkan',
+'move-leave-redirect' => 'Buek pangaliahan ka judul baru',
 
 # Export
 'export' => 'Ekspor laman',
@@ -1951,6 +2015,7 @@ Silakan piliah namo lain.',
 'allmessagesname' => 'Namo',
 'allmessagesdefault' => 'Teks pasan default',
 'allmessages-language' => 'Bahaso:',
+'allmessages-filter-submit' => 'Tuju',
 
 # Thumbnails
 'thumbnail-more' => 'Pagadang',
@@ -1983,7 +2048,7 @@ Sanak hanyo buliah mancaliak sumbernyo sajo',
 'tooltip-ca-protect' => 'Linduangi laman ko',
 'tooltip-ca-unprotect' => 'Tuka palinduangan laman ko',
 'tooltip-ca-delete' => 'Hapuih laman ko',
-'tooltip-ca-move' => 'Pindahan laman ko',
+'tooltip-ca-move' => 'Pindahkan laman ko',
 'tooltip-ca-watch' => 'Tambahkan laman ko ka daftar pantau Sanak',
 'tooltip-ca-unwatch' => 'Kaluaan laman ko dari daftar pantau',
 'tooltip-search' => 'Cari {{SITENAME}}',
@@ -2109,6 +2174,7 @@ Sanak hanyo buliah mancaliak sumbernyo sajo',
 
 # Patrol log
 'patrol-log-page' => 'Log patroli',
+'patrol-log-header' => 'Iko daftar log revisi nan alah dipatroli.',
 'log-show-hide-patrol' => '$1 log patroli',
 
 # Browsing diffs
@@ -2257,6 +2323,10 @@ Nan lainnyo akan tasuruak sacaro baku.
 
 # Table pager
 'table_pager_limit_label' => 'Item per laman:',
+'table_pager_limit_submit' => 'Tuju',
+
+# Auto-summaries
+'autosumm-new' => '←Mambuek laman baisi "$1"',
 
 # Watchlist editor
 'watchlistedit-raw-titles' => 'Judul:',
@@ -2312,7 +2382,7 @@ Nan lainnyo akan tasuruak sacaro baku.
 'specialpages-group-maintenance' => 'Laporan pamaliharoan',
 'specialpages-group-other' => 'Lain-lain',
 'specialpages-group-login' => 'Masuak log / mandaftar',
-'specialpages-group-changes' => 'Parubahan tabaru jo log',
+'specialpages-group-changes' => 'Parubahan baru jo log',
 'specialpages-group-media' => 'Laporan jo pamuatan berkas',
 'specialpages-group-users' => 'Pangguno jo hak pangguno',
 'specialpages-group-highuse' => 'Nan paliang',
@@ -2370,10 +2440,16 @@ Situs ko mangalami masalah teknis.',
 'htmlform-required' => 'Nilai ko diparaluan',
 
 # New logging system
+'logentry-delete-restore' => '$1 {{GENDER:$2|mangambalian}} laman $3',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|manandoi}} revisi $4 dari laman $3 tapatroli',
+'logentry-patrol-patrol-auto' => '$1 otomatih {{GENDER:$2|manandoi}} revisi $4 dari laman $3 tapatroli',
 'logentry-newusers-newusers' => 'Akun pangguno $1 lah dibuek',
 'logentry-newusers-create' => '$1 mambuek akun pangguno',
 'logentry-newusers-create2' => 'Akun pangguno $3 dibuek jo $1',
 'logentry-newusers-autocreate' => 'Akun $1 dibuek sacaro otomatis',
+'logentry-rights-rights' => '$1 {{GENDER:$2|maubah}} kaanggotaan kalompok $3 dari $4 manjadi $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|maubah}} kaanggotaan kalompok $3',
+'rightsnone' => '(indak ado)',
 
 # Search suggestions
 'searchsuggest-search' => 'Cari',
index e50be8c..2a6a78b 100644 (file)
@@ -476,7 +476,7 @@ $messages = array(
 
 'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
 
-'about' => 'Ð\98нÑ\84оÑ\80маÑ\86ии Ð·Ð°',
+'about' => 'Ð\97а {{SITENAME}}',
 'article' => 'Статија',
 'newwindow' => '(се отвора во нов прозорец)',
 'cancel' => 'Откажи',
@@ -815,7 +815,7 @@ $2',
 'createacct-reason' => 'Причина',
 'createacct-reason-ph' => 'Зошто правите друга сметка',
 'createacct-captcha' => 'Безбедносна проверка',
-'createacct-captcha-help-url' => '{{ns:Project}}:Барање на сметка',
+'createacct-captcha-help-url' => '{{ns:Project}}:Барање_на_сметка',
 'createacct-imgcaptcha-help' => 'Не можете да ја видите сликата? [[{{MediaWiki:createacct-captcha-help-url}}|Побарајте сметка]]',
 'createacct-imgcaptcha-ph' => 'Внесете го гореприкажаниот текст',
 'createacct-submit' => 'Направи ја',
@@ -1410,7 +1410,7 @@ $1",
 'searchsubtitle' => "Пребарувате '''[[:$1]]''' на ([[Special:Prefixindex/$1|сите страници кои започнуваат со „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|сите страници кои водат до „$1“]])",
 'searchsubtitleinvalid' => "Пребарувавте '''$1'''",
 'toomanymatches' => 'Премногу резултати од пребарувањето, ве молиме обидете се со поинакво барање',
-'titlematches' => 'Ð\9dаÑ\81ловоÑ\82 Ð½Ð° Ñ\81Ñ\82аÑ\82иÑ\98аÑ\82а Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ\80а',
+'titlematches' => 'СовпаднаÑ\82и Ð½Ð°Ñ\81лови',
 'notitlematches' => 'Ниеден наслов на страница не одговара',
 'textmatches' => 'Совпаднат текст во страниците',
 'notextmatches' => 'Ниеден текст во статиите не одговара',
@@ -2364,6 +2364,15 @@ $1',
 'listusers-noresult' => 'Не е пронајден корисник.',
 'listusers-blocked' => '(блокиран)',
 
+# Special:ActiveUsers
+'activeusers' => 'Список на активни корисници',
+'activeusers-intro' => 'Ова е список на корисници кои биле на некој начин активни во последните $1 {{PLURAL:$1|ден|дена}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|дејство|дејства}} {{PLURAL:$3|денес|во последните $3 дена}}',
+'activeusers-from' => 'Прикажи корисници почнувајќи од:',
+'activeusers-hidebots' => 'Скриј ботови',
+'activeusers-hidesysops' => 'Скриј администратори',
+'activeusers-noresult' => 'Нема пронајдено корисници.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Права на кориснички групи',
 'listgrouprights-summary' => 'Следи список на кориснички групи утврдени на ова вики, заедно со нивните придружни права на пристап.
@@ -2749,7 +2758,7 @@ $1',
 'blockip-legend' => 'Блокирај корисник',
 'blockiptext' => 'Користете го долниот образец за да го забраните пристапот за пишување од одредена IP-адреса или корисничко име.
 Ова единствено треба да се прави за да се спречи вандализам, во согласност со [[{{MediaWiki:Policy-url}}|правилата на Википедија]].
\98збеÑ\80еÑ\82е ÐºÐ¾Ð½ÐºÑ\80еÑ\82на Ð¿Ñ\80иÑ\87ина Ð¿Ð¾Ð´Ð¾Ð»Ñ\83 (пÑ\80имеÑ\80: Ñ\86иÑ\82иÑ\80аÑ\9aе Ð½Ð° ÐºÐ¾Ð½ÐºÑ\80еÑ\82ни Ñ\81Ñ\82Ñ\80аниÑ\86и што биле вандализирани).',
\98збеÑ\80еÑ\82е ÐºÐ¾Ð½ÐºÑ\80еÑ\82на Ð¿Ñ\80иÑ\87ина Ð¿Ð¾Ð´Ð¾Ð»Ñ\83 (на Ð¿Ñ\80. Ð½Ð°Ð²ÐµÐ´Ñ\83ваÑ\98Ñ\9cи Ð³Ð¸ Ñ\81Ñ\82Ñ\80аниÑ\86иÑ\82е што биле вандализирани).',
 'ipadressorusername' => 'IP-адреса или корисничко име:',
 'ipbexpiry' => 'Истек на рокот:',
 'ipbreason' => 'Причина:',
index fa9941c..29ffa1b 100644 (file)
@@ -2274,6 +2274,15 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'listusers-noresult' => 'ഈ സംഘത്തിൽ ഉൾപ്പെടുന്ന ഉപയോക്താക്കൾ ആരും ഇല്ല.',
 'listusers-blocked' => '(തടയപ്പെട്ടു)',
 
+# Special:ActiveUsers
+'activeusers' => 'സജീവ ഉപയോക്താക്കളുടെ പട്ടിക',
+'activeusers-intro' => 'ഇത് കഴിഞ്ഞ {{PLURAL:$1|ദിവസം|$1 ദിവസങ്ങളിൽ}} ഏതെങ്കിലും വിധത്തിലുള്ള പ്രവർത്തനങ്ങൾ ചെയ്ത ഉപയോക്താക്കളുടെ പട്ടികയാണ്.',
+'activeusers-count' => 'കഴിഞ്ഞ {{PLURAL:$3|ഒരു ദിവസം|$3 ദിവസങ്ങളിൽ}} {{PLURAL:$1|ഒരു പ്രവൃത്തി|$1 പ്രവൃത്തികൾ}}',
+'activeusers-from' => 'ഇങ്ങനെ തുടങ്ങുന്ന ഉപയോക്താക്കളെ കാട്ടുക:',
+'activeusers-hidebots' => 'യന്ത്രങ്ങളെ മറയ്ക്കുക',
+'activeusers-hidesysops' => 'കാര്യനിർവാഹകരെ മറയ്ക്കുക',
+'activeusers-noresult' => 'ഉപയോക്താക്കളില്ല',
+
 # Special:ListGroupRights
 'listgrouprights' => 'ഉപയോക്തൃവിഭാഗത്തിന്റെ അവകാശങ്ങൾ',
 'listgrouprights-summary' => 'ഈ വിക്കിയിൽ നിർവ്വചിക്കപ്പെട്ടിരിക്കുന്ന ഉപയോക്തൃസംഘങ്ങളെയും, ആ സംഘങ്ങൾക്ക് പ്രാപ്തമായിട്ടുള്ള അവകാശങ്ങളേയും താഴെ കുറിച്ചിരിക്കുന്നു.
index 9df1ee0..432b562 100644 (file)
@@ -2128,6 +2128,15 @@ Memerlukan sekurang-kurangnya satu domain peringkat tinggi, cth. "*.org".<br />
 'listusers-noresult' => 'Tiada pengguna dijumpai.',
 'listusers-blocked' => '(disekat)',
 
+# Special:ActiveUsers
+'activeusers' => 'Senarai pengguna aktif',
+'activeusers-intro' => 'Yang berikut ialah senarai pengguna yang bergiat sejak {{PLURAL:$1|semalam|$1 hari lalu}}.',
+'activeusers-count' => '$1 tindakan sejak {{PLURAL:$3|semalam|$3 hari lalu}}',
+'activeusers-from' => 'Tunjukkan pengguna bermula pada:',
+'activeusers-hidebots' => 'Sorokkan bot',
+'activeusers-hidesysops' => 'Sorokkan pentadbir',
+'activeusers-noresult' => 'Tiada pengguna dijumpai.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Hak kumpulan pengguna',
 'listgrouprights-summary' => 'Yang berikut ialah senarai kumpulan pengguna yang ditubuhkan di wiki ini dengan hak-hak masing-masing.
index 157e7ee..40a33b5 100644 (file)
@@ -2261,6 +2261,15 @@ Det kreves at det oppgis minst et toppnivådomene, for eksempel «*.org».<br />
 'listusers-noresult' => 'Ingen brukere funnet.',
 'listusers-blocked' => '(konto blokkert)',
 
+# Special:ActiveUsers
+'activeusers' => 'Liste over aktive brukere',
+'activeusers-intro' => 'Dette er en liste over brukere som har hatt en eller annen form for aktivitet innenfor {{PLURAL:$1|den siste dagen|de siste dagene}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|endring|endringer}} {{PLURAL:$3|det siste døgnet|de siste $3 dagene}}',
+'activeusers-from' => 'Vis brukere fra og med:',
+'activeusers-hidebots' => 'Skjul roboter',
+'activeusers-hidesysops' => 'Skjul administratorer',
+'activeusers-noresult' => 'Ingen brukere funnet.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Rettigheter for brukergrupper',
 'listgrouprights-summary' => 'Følgende er en liste over brukergrupper som er definert på denne wikien, og hvilke rettigheter de har.
index 665507f..459c73e 100644 (file)
@@ -2218,6 +2218,15 @@ Ondersteunde protokollen: <code>$1</code> (zet t niet in joew zeukopdrachte).',
 'listusers-noresult' => 'Gien gebrukers evunnen. Zeuk oek naor variaanten mit kleine letters of heufdletters.',
 'listusers-blocked' => '(eblokkeerd)',
 
+# Special:ActiveUsers
+'activeusers' => 'Aktieve gebrukers',
+'activeusers-intro' => 'Dit is n lieste van gebrukers die de aofgeleupen $1 {{PLURAL:$1|dag|dagen}} enigszins aktief ewest hebben.',
+'activeusers-count' => '$1 leste {{PLURAL:$1|bewarking|bewarkingen}} in de aofgeleupen {{PLURAL:$3|dag|$3 dagen}}',
+'activeusers-from' => 'Laot gebrukers zien vanaof:',
+'activeusers-hidebots' => 'Bots verbargen',
+'activeusers-hidesysops' => 'Beheerders verbargen',
+'activeusers-noresult' => 'Gien aktieve gebrukers evunnen.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Rechten van gebrukersgroepen',
 'listgrouprights-summary' => "Op disse zied staon de gebrukersgroepen van disse wiki beschreven, mit de biebeheurende rechten.
index 85fa283..aa33d14 100644 (file)
@@ -45,6 +45,7 @@
  * @author Troefkaart
  * @author Tvdm
  * @author User555
+ * @author WTM
  * @author Wiki13
  * @author לערי ריינהארט
  */
@@ -776,7 +777,7 @@ Vergeet niet uw [[Special:Preferences|voorkeuren voor {{SITENAME}}]] aan te pass
 'yourname' => 'Gebruikersnaam:',
 'userlogin-yourname' => 'Gebruikersnaam',
 'userlogin-yourname-ph' => 'Geef uw gebruikersnaam op',
-'createacct-helpusername-url' => '{{ns:Project}}:Beleid_gebruikersnamen',
+'createacct-helpusername-url' => '{{ns:Project}}:Gebruikersnamenbeleid',
 'createacct-helpusername-link' => '[[{{MediaWiki:createacct-helpusername-url}}|(help me kiezen)]]',
 'yourpassword' => 'Wachtwoord:',
 'userlogin-yourpassword' => 'Wachtwoord',
@@ -786,7 +787,7 @@ Vergeet niet uw [[Special:Preferences|voorkeuren voor {{SITENAME}}]] aan te pass
 'createacct-yourpasswordagain' => 'Bevestig wachtwoord',
 'createacct-yourpasswordagain-ph' => 'Geef het wachtwoord opnieuw op',
 'remembermypassword' => 'Aanmeldgegevens onthouden (maximaal $1 {{PLURAL:$1|dag|dagen}})',
-'userlogin-remembermypassword' => 'Aanmeldgegevens onthouden',
+'userlogin-remembermypassword' => 'Aangemeld blijven',
 'userlogin-signwithsecure' => 'Aanmelden via beveiligde server',
 'securelogin-stick-https' => 'Verbonden blijven via HTTPS na aanmelden',
 'yourdomainname' => 'Uw domein:',
@@ -818,14 +819,16 @@ Vergeet niet uw [[Special:Preferences|voorkeuren voor {{SITENAME}}]] aan te pass
 'createacct-realname' => 'Echte naam (optioneel)',
 'createaccountreason' => 'Reden:',
 'createacct-reason' => 'Reden',
+'createacct-reason-ph' => 'Waarom u een andere gebruiker aanmaakt',
 'createacct-captcha' => 'Veiligheidscontrole',
 'createacct-captcha-help-url' => '{{ns:Project}}:Gebruiker_aanvragen',
 'createacct-imgcaptcha-help' => 'Kunt u de afbeelding niet zien? [[{{MediaWiki:createacct-captcha-help-url}}|Vraag dan een gebruiker aan]]',
 'createacct-imgcaptcha-ph' => 'Geef de tekst in die u hierboven ziet',
+'createacct-submit' => 'Gebruiker aanmaken',
 'createacct-benefit-heading' => '{{SITENAME}} wordt gemaakt door mensen zoals u.',
 'createacct-benefit-body1' => 'bewerkingen',
-'createacct-benefit-body2' => "pagina{{PLURAL:$1||'s}}",
-'createacct-benefit-body3' => 'bijdrager{{PLURAL:$1||s}} deze maand',
+'createacct-benefit-body2' => "pagina{{PLURAL:{{NUMBEROFARTICLES:R}}||'s}}",
+'createacct-benefit-body3' => 'bijdrager{{PLURAL:$1||s}}',
 'badretype' => 'De ingevoerde wachtwoorden verschillen van elkaar.',
 'userexists' => 'De gekozen gebruikersnaam is al in gebruik.
 Kies een andere naam.',
@@ -1628,6 +1631,7 @@ Als u deze opgeeft, kan deze naam gebruikt worden om u erkenning te geven voor u
 'userrights-notallowed' => 'U hebt geen rechten om gebruikersrechten toe te voegen of te verwijderen.',
 'userrights-changeable-col' => 'Groepen die u kunt beheren',
 'userrights-unchangeable-col' => 'Groepen die u niet kunt beheren',
+'userrights-conflict' => 'Er is een probleem opgetreden tijdens het instellen van de gebruikersrechten. Pas uw wijzigingen opnieuw toe.',
 
 # Groups
 'group' => 'Groep:',
@@ -2387,6 +2391,15 @@ Heeft tenminste een topleveldomein nodig, zoals bijvoorbeeld "*.org".<br />
 'listusers-noresult' => 'Geen gebruiker gevonden.',
 'listusers-blocked' => '(geblokkeerd)',
 
+# Special:ActiveUsers
+'activeusers' => 'Aanwezige gebruikers',
+'activeusers-intro' => 'Dit is een lijst met gebruikers die enige activiteit hebben laten zien in de afgelopen {{PLURAL:$1|dag|$1 dagen}}.',
+'activeusers-count' => '$1 recente {{PLURAL:$1|handeling|handelingen}} in de {{PLURAL:$3|afgelopen dag|laatste $3 dagen}}',
+'activeusers-from' => 'Gebruikers worden weergegeven vanaf:',
+'activeusers-hidebots' => 'Bots verbergen',
+'activeusers-hidesysops' => 'Beheerders verbergen',
+'activeusers-noresult' => 'Geen actieve gebruikers gevonden.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Rechten van gebruikersgroepen',
 'listgrouprights-summary' => 'Op deze pagina staan de gebruikersgroepen in deze wiki beschreven, met hun bijbehorende rechten.
@@ -2588,7 +2601,7 @@ Ga een pagina terug, laad die pagina opnieuw en probeer het nog eens.',
 'protectlogtext' => "Hieronder staan pagina's waarvan de beveiliging recentelijk gewijzigd is.
 Zie de [[Special:ProtectedPages|lijst met beveiligde pagina's]] voor alle beveiligde pagina's.",
 'protectedarticle' => 'heeft "[[$1]]" beveiligd',
-'modifiedarticleprotection' => 'heeft het beveiligingsniveau voor "[[$1]]" gewijzigd',
+'modifiedarticleprotection' => 'heeft het beveiligingsniveau gewijzigd voor "[[$1]]"',
 'unprotectedarticle' => 'heeft de beveiliging van "[[$1]]" opgeheven',
 'movedarticleprotection' => 'heeft beveiligingsinstellingen verplaatst van "[[$2]]" naar "[[$1]]"',
 'protect-title' => 'Beveiligingsniveau instellen voor "$1"',
index 888edb3..1a9acd5 100644 (file)
@@ -2212,6 +2212,15 @@ Det er påkravt med eit toppnivådomene, til dømes «*.org».<br />
 'listusers-noresult' => 'Ingen brukarnamn vart funne.',
 'listusers-blocked' => '(konto blokkert)',
 
+# Special:ActiveUsers
+'activeusers' => 'Liste over aktive brukarar',
+'activeusers-intro' => 'Dette er ei liste over brukarar som har hatt ei eller anna form for aktivitet innanfor {{PLURAL:$1|den siste dagen|dei siste dagane}}.',
+'activeusers-count' => '{{PLURAL:$1|Éi handling|$1 handlingar}} {{PLURAL:$3|det siste døgeret|dei siste $3 døgra}}',
+'activeusers-from' => 'Vis brukarar frå og med:',
+'activeusers-hidebots' => 'Skjul botar',
+'activeusers-hidesysops' => 'Skjul administratorar',
+'activeusers-noresult' => 'Ingen brukarar funne.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Rettar for brukargrupper',
 'listgrouprights-summary' => 'Detter ei liste som viser brukargruppene som er definerte på wikien, og kva rettar dei har. Det kan finnast [[{{MediaWiki:Listgrouprights-helppage}}|meir informasjon]]  om dei ulike rettane.',
index b079132..0db2541 100644 (file)
@@ -187,7 +187,7 @@ $fallback8bitEncoding =  'windows-1251';
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'Æрвитæнты бын хахх',
+'tog-underline' => 'Æрвитæнты бын хахх:',
 'tog-justify' => 'Æмвæз абзацтæ',
 'tog-hideminor' => 'Чысыл ивддзинæдтæ фæстаг ивддзинæдты номхыгъды мауал æвдис',
 'tog-hidepatrolled' => 'Айсын бæрæггонд ивдтытæ фæстаг ивдтытæй',
@@ -196,7 +196,7 @@ $messages = array(
 'tog-usenewrc' => 'Фæстаг æмæ цæстдард ивдтытæ фарсмæ гæсгæ иу кæнæт (домы JavaScript)',
 'tog-numberheadings' => 'Сæртæн хæдæвзæргæ номыр æвæрын',
 'tog-showtoolbar' => 'Æвдисын ивыны панел (домы JavaScript)',
-'tog-editondblclick' => 'Фæрстæ дыкъæппæй ив (JavaScript)',
+'tog-editondblclick' => 'Фæрстæ дыкъæппæй ив (домы JavaScript)',
 'tog-editsection' => 'Равдис «баив æй» æрвитæн тексты алы хайы дæр',
 'tog-editsectiononrightclick' => 'Хайы сæрыл рахис æркъæппæй ивыны фадат баиу кæнын (домы JavaScript)',
 'tog-showtoc' => 'Сæрты номхыгъд æвдисын (æртæйæ фылдæрсæр цы фарсы ис, уым)',
@@ -230,7 +230,7 @@ $messages = array(
 'tog-showhiddencats' => 'Æмбæхст категоритæ æвдис',
 'tog-norollbackdiff' => 'Рауадзын иртасæн раздæхты фæстæ',
 
-'underline-always' => 'Æдзух',
+'underline-always' => 'Алкуыдæр',
 'underline-never' => 'Никуы',
 'underline-default' => 'Цъар æви сгарæнмæ гæсгæ',
 
@@ -295,7 +295,7 @@ $messages = array(
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Категори|Категоритæ}}',
-'category_header' => 'Категори "$1"',
+'category_header' => 'Категори "{{grammar:genitive|$1}}" фæрстæ',
 'subcategories' => 'Дæлкатегоритæ',
 'category-media-header' => 'Категори "{{grammar:genitive|$1}}" файлтæ',
 'category-empty' => "''Ацы категори афтид у.''",
@@ -320,13 +320,13 @@ $messages = array(
 'morenotlisted' => 'Фылдæр æнææвдыст...',
 'mypage' => 'Фарс',
 'mytalk' => 'Ныхас',
-'anontalk' => 'Ацы IP-адрисы тæрхон',
+'anontalk' => 'Ацы IP адрисы тæрхон',
 'navigation' => 'Навигаци',
 'and' => '&#32;æмæ',
 
 # Cologne Blue skin
-'qbfind' => 'Ð\90гÑ\83р',
-'qbbrowse' => 'Фен',
+'qbfind' => 'СÑ\81ар',
+'qbbrowse' => 'СгаÑ\80',
 'qbedit' => 'Ивын',
 'qbpageoptions' => 'Ацы фарс',
 'qbmyoptions' => 'Мæ фæрстæ',
@@ -353,7 +353,7 @@ $messages = array(
 
 'navigation-heading' => 'Навигацион меню',
 'errorpagetitle' => 'Рæдыд',
-'returnto' => 'Фæстæмæ $1 фарсмæ.',
+'returnto' => 'Фæстæмæ, {{grammar:allative|$1}}.',
 'tagline' => '{{grammar:ablative|{{SITENAME}}}}',
 'help' => 'Æххуыс',
 'search' => 'Агуырд',
@@ -363,10 +363,10 @@ $messages = array(
 'history' => 'Фарсы истори',
 'history_short' => 'Истори',
 'updatedmarker' => 'ноггонд мæ фæстаг æрбахызтæй',
-'printableversion' => 'Мыхурмæ верси',
-'permalink' => 'Ð\90Ñ\86Ñ\8b Ð²ÐµÑ\80Ñ\81имæ æрвитæн',
+'printableversion' => 'Мыхурæн',
+'permalink' => 'УдгаÑ\81 æрвитæн',
 'print' => 'Мыхуыр',
-'view' => 'Æркæст',
+'view' => 'Кæсын',
 'edit' => 'Ивын',
 'create' => 'Скæнын',
 'editthispage' => 'Ивын ацы фарс',
@@ -377,34 +377,34 @@ $messages = array(
 'viewdeleted_short' => 'Кæсын {{PLURAL:$1|иу хафт ивд|$1 хафт ивдтытæ}}',
 'protect' => 'Сæхгæнын',
 'protect_change' => 'баивын',
-'protectthispage' => 'СæÑ\85гæн Ð°Ñ\86Ñ\8b Ñ\84аÑ\80Ñ\81',
+'protectthispage' => 'Ð\90Ñ\86Ñ\8b Ñ\84аÑ\80Ñ\81 Ñ\81æÑ\85гæнÑ\8bн',
 'unprotect' => 'Ивын хъахъхъæд',
 'unprotectthispage' => 'Ивын ацы фарсы хъахъхъæд',
 'newpage' => 'Ног фарс',
 'talkpage' => 'Ацы фарсы тыххæй ныхас',
 'talkpagelinktext' => 'Ныхас',
 'specialpage' => 'Сæрмагонд фарс',
-'personaltools' => 'Ð\9cигæнæнтæ',
+'personaltools' => 'Хион Ñ\84æÑ\80æзтæ',
 'postcomment' => 'Ног хай',
 'articlepage' => 'Фенын уац',
 'talk' => 'Тæрхон',
 'views' => 'Æркæстытæ',
 'toolbox' => 'Фæрæзтæ',
-'userpage' => 'Ð\90Ñ\86Ñ\8b Ð°Ñ\80Ñ\85айæджÑ\8b Ñ\84аÑ\80Ñ\81 Ñ\84ен',
-'projectpage' => 'Проекты фарс фен',
-'imagepage' => 'Файлы фарс фен',
-'mediawikipage' => 'Фыстæджы фарс фен',
+'userpage' => 'Ð\90Ñ\80Ñ\85айæджÑ\8b Ñ\84аÑ\80Ñ\81 Ñ\84енÑ\8bн',
+'projectpage' => 'Проекты фарс фенын',
+'imagepage' => 'Файлы фарс фенын',
+'mediawikipage' => 'Фыстæджы фарс фенын',
 'templatepage' => 'Хуызæджы фарс фенын',
-'viewhelppage' => 'Æххуысы фарс фен',
-'categorypage' => 'Категорийы фарс фен',
+'viewhelppage' => 'Æххуысы фарс фенын',
+'categorypage' => 'Категорийы фарс фенын',
 'viewtalkpage' => 'Тæрхон фен',
 'otherlanguages' => 'Æндæр æвзæгтыл',
 'redirectedfrom' => '({{grammar:ablative|$1}} æрвыст)',
-'redirectpagesub' => 'Рарвысты фарс',
+'redirectpagesub' => 'Æрвитæн фарс',
 'lastmodifiedat' => 'Ацы фарс фæстаг хатт ивд æрцыд: $1, $2.',
 'viewcount' => 'Ацы фарс домд æрцыд {{PLURAL:$1|иу хатт|$1 хатты}}.',
 'protectedpage' => 'Æхгæд фарс',
-'jumpto' => 'ТагÑ\8aд Ã¦Ñ\80виÑ\82æнÑ\82æ:',
+'jumpto' => 'Ð\90Ñ\80дæм:',
 'jumptonavigation' => 'навигаци',
 'jumptosearch' => 'агуырд',
 'view-pool-error' => 'Хатыр, сервертæ тынг æнæвдæлон сты ацы тæккæ.
@@ -414,12 +414,12 @@ $messages = array(
 $1',
 'pool-timeout' => 'Скусыны афон у',
 'pool-queuefull' => 'Процессты рад йедзаг у',
-'pool-errorunknown' => 'Æбæрæг рæдыд',
+'pool-errorunknown' => 'Ã\86нæбæÑ\80æг Ñ\80æдÑ\8bд',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
 'aboutsite' => '{{grammar:genitive|{{SITENAME}}}} тыххæй',
 'aboutpage' => 'Project:Афыст',
-'copyright' => 'Ð\9bиÑ\86ензи: $1.',
+'copyright' => 'Ð\9cидиÑ\81 Ñ\83 Ð³Ð¾Ð¼ {{grammar:allative|$1}} Ð³Ã¦Ñ\81гæ.',
 'copyrightpage' => '{{ns:project}}:Авторы бартæ',
 'currentevents' => 'Ног хабæрттæ',
 'currentevents-url' => 'Project:Ног хабæрттæ',
@@ -431,16 +431,16 @@ $1',
 'mainpage' => 'Сæйраг фарс',
 'mainpage-description' => 'Сæйраг фарс',
 'policy-url' => 'Project:Фæтк',
-'portal' => 'Архайджыты æхсæнад',
+'portal' => 'Æхсæнады портал',
 'portal-url' => 'Project:Архайджыты æхсæнад',
 'privacy' => 'Хибардзинады политикæ',
 'privacypage' => 'Project:Хибардзинады политикæ',
 
-'badaccess' => 'Ð\91аÑ\86æÑ\83æны рæдыд',
-'badaccess-group0' => 'Ð\90Ñ\86Ñ\8b Ð°Ñ\80Ñ\85айд Ñ\80акæныны бар дæм нæй.',
+'badaccess' => 'Ð\91аÑ\80лæвæÑ\80ды рæдыд',
+'badaccess-group0' => 'ЦÑ\8b Ð°Ñ\80Ñ\85айд Ã¦Ñ\80домдÑ\82ай, Ñ\83Ñ\8bй кæныны бар дæм нæй.',
 'badaccess-groups' => 'Æрдомд арæзтытæ ис бар аразын æрмаст ацы {{PLURAL:$2|къорды|къордты}} уæнгтæн: $1.',
 
-'versionrequired' => 'Ð¥Ñ\8aæÑ\83Ñ\8b MediaWiki-йÑ\8b Ð²ÐµÑ\80Ñ\81ии $1',
+'versionrequired' => 'Ð\94омÑ\8b MediaWiki-йÑ\8b $1-æм Ñ\84æлÑ\82æÑ\80',
 'versionrequiredtext' => 'Хъæуы MediaWiki-йы $1 фæлтæр, цæмæй ацы фарсæй архайæн уа.
 Кæс [[Special:Version|фæлтæры фарс]].',
 
@@ -531,18 +531,18 @@ $1',
 'missingarticle-rev' => '(фæлтæр № $1)',
 'missingarticle-diff' => '(хъауджы: $1, $2)',
 'readonly_lag' => 'Рарддон йæхæдæг сæхгæд ис, цалынмæ дыггагон севертæ нæ ссинхронизаци кæной фыццагонтимæ',
-'internalerror' => 'Мидæг рæдыд',
-'internalerror_info' => 'Мидæг рæдыд: $1',
+'internalerror' => 'Мидæггаг рæдыд',
+'internalerror_info' => 'Мидæггаг рæдыд: $1',
 'fileappenderrorread' => 'Нæ рауадис бафæрсын "$1" æфтауыны рæстæджы.',
 'fileappenderror' => 'Нæ рауадис бафтауын "$1" "{{grammar:allative|$2}}".',
-'filecopyerror' => 'Файл «$1» файлмæ «$2» халдихгæнæн нæ разынд.',
+'filecopyerror' => 'Файл «$1» файл {{grammar:allative|«$2»}} къопи кæнын нæ рауад.',
 'filerenameerror' => 'Нæ рауадис фæивын "$1" файлы ном "$2"-мæ.',
 'filedeleteerror' => 'Нæ уайы файл «$1» схафын.',
-'directorycreateerror' => 'Ð\9dæй Ñ\81аÑ\80азæн Ñ\84айлдон Â«$1».',
-'filenotfound' => 'Ð\9dæй Ñ\81Ñ\81аÑ\80æн Ñ\84айл Â«$1».',
+'directorycreateerror' => 'Ð\94иÑ\80екÑ\82оÑ\80и Â«$1» Ñ\81аÑ\80азÑ\8bн Ð½Ã¦ Ñ\80аÑ\83адиÑ\81.',
+'filenotfound' => 'Файл Â«$1» Ñ\81Ñ\81аÑ\80Ñ\8bн Ð½Ã¦ Ñ\80аÑ\83адиÑ\81.',
 'fileexistserror' => 'Нæй фыссæн "$1" файлы: Файл ис.',
-'unexpected' => 'Æнæмбæлон æмиасад: «$1»=«$2».',
-'formerror' => 'Рæдыд: формæ арвитæн нæй',
+'unexpected' => 'Æнæмбæлон нысаниуæг: «$1»=«$2».',
+'formerror' => 'Рæдыд: формæ арвитын нæ рауадис.',
 'badarticleerror' => 'Ацы архайд нæ арæзт кæны ацы фарсыл.',
 'cannotdelete' => 'Нæ уайы файл кæнæ фарс "$1" схафын.
 Гæнæн ис, æндæр чидæр æй схафта.',
@@ -578,7 +578,7 @@ $2',
 'namespaceprotected' => "Дæуæн нæй бар ивын фæрстæ '''$1''' номдоны.",
 'customcssprotected' => 'Дæуæн нæй бар ивын ацы CSS фарс, уымæн æмæ уым ис æндæр архайæджы персоналон æвæрдтытæ.',
 'customjsprotected' => 'Дæуæн нæй бар ивын ацы JavaScript фарс, уымæн æмæ уым ис æндæр архайæджы персоналон æвæрдтытæ.',
-'ns-specialprotected' => 'Сæрмагонд фæрстæ ({{ns:special}}) баивæн нæй.',
+'ns-specialprotected' => 'Сæрмагонд фæрстæн ивæн нæй.',
 'titleprotected' => 'Ацы ном уыд æхгæд саразынæй. Сæхгæдта йæ [[User:$1|$1]].
 Æхгæныны бындур уыд "\'\'$2\'\'".',
 'filereadonlyerror' => 'Нæ уайы фæивын файл "$1" уый тыххæй æмæ репозиторий "$2" кусы æрмæст фæрсыны уавæры.
@@ -603,9 +603,20 @@ $2',
 'welcomecreation-msg' => 'Дæ аккаунт арæзт æрцыдис.
 Ма дæ ферох уæт æркæсын дæ [[Special:Preferences|{{grammar:genitive|{{SITENAME}}}} уагæвæрдтæм]].',
 'yourname' => 'Фæсномыг:',
+'userlogin-yourname' => 'Фæсномыг',
+'userlogin-yourname-ph' => 'Бафысс дæ фæсномыг',
+'createacct-helpusername-url' => '{{ns:Project}}:Фæсномыг',
+'createacct-helpusername-link' => '[[{{MediaWiki:createacct-helpusername-url}}|(равзарынæн æххуыс)]]',
 'yourpassword' => 'Пароль:',
-'yourpasswordagain' => 'Дæ пароль иу хатт ма:',
+'userlogin-yourpassword' => 'Пароль',
+'userlogin-yourpassword-ph' => 'Бафысс дæ пароль',
+'createacct-yourpassword-ph' => 'Бафысс пароль',
+'yourpasswordagain' => 'Пароль ногæй бафысс:',
+'createacct-yourpasswordagain' => 'Сбæлвырд кæн пароль',
+'createacct-yourpasswordagain-ph' => 'Пароль ногæй бафысс',
 'remembermypassword' => 'Бахъуыды мæ кæнæд ашы браузеры (максимум $1 {{PLURAL:$1|бонмæ|бонмæ}})',
+'userlogin-remembermypassword' => 'Системæйы мæ дар',
+'userlogin-signwithsecure' => 'Æдас серверæй бахизын',
 'securelogin-stick-https' => 'Дарддæр дæр HTTPS-ы уылты, бахизыны фæстæ',
 'yourdomainname' => 'Дæ домен:',
 'password-change-forbidden' => 'Дæ бон нæу пароль фæивын ацы викийы.',
@@ -617,19 +628,40 @@ $2',
 'userloginnocreate' => 'Бахизын',
 'logout' => 'Рахизын',
 'userlogout' => 'Рахизын',
-'notloggedin' => 'Системæйæн дæхи нæ бацамыдтай',
-'nologin' => "Регистрацигонд нæма дæ? '''$1'''.",
+'notloggedin' => 'Системæмæ хызт нæ дæ',
+'userlogin-noaccount' => 'Нæй дын аккаунт?',
+'userlogin-joinproject' => 'Баиу у {{grammar:comitative|{{SITENAME}}}}',
+'nologin' => 'Регистрацигонд нæма дæ? $1.',
 'nologinlink' => 'Регистраци',
 'createaccount' => 'Регистраци кæнын',
 'gotaccount' => 'Регистрацигонд дæ? $1.',
 'gotaccountlink' => 'Бахизын',
 'userlogin-resetlink' => 'Ферох дæ сты дæ бахизæнтæ?',
+'helplogin-url' => 'Æххуыс:Бахизын',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Бахизынæн æххуыс]]',
+'createacct-join' => 'Дæ информаци дæлдæр бафысс.',
+'createacct-emailrequired' => 'Электрон посты адрис',
+'createacct-emailoptional' => 'Электрон посты адрис (фæндон)',
+'createacct-email-ph' => 'Бафысс дæ электрон посты адрис',
 'createaccountmail' => 'адрисмæ гæсгæ',
+'createacct-realname' => 'Æцæг ном (фæндон)',
 'createaccountreason' => 'Бындур:',
-'badretype' => 'Дыууæ хатты иу пароль хъуамæ ныффыстаис',
+'createacct-reason' => 'Бындур',
+'createacct-reason-ph' => 'Цæмæн аразыс æндæр аккаунт?',
+'createacct-captcha' => 'Æдасдзинад бæлвырдгæнæн',
+'createacct-captcha-help-url' => '{{ns:Project}}:Аккаунт æрдомæн',
+'createacct-imgcaptcha-help' => 'Ныв нæ уыныс? [[{{MediaWiki:createacct-captcha-help-url}}|Аккаунт æрдом]]',
+'createacct-imgcaptcha-ph' => 'Уæлдæр цы текст уыныс, уый бафысс',
+'createacct-submit' => 'Сараз дæ аккаунт',
+'createacct-benefit-heading' => '{{SITENAME}} сарæзтой дæ хуызæн адæм.',
+'createacct-benefit-body1' => 'ивдтытæ',
+'createacct-benefit-body2' => 'фæрстæ',
+'createacct-benefit-body3' => 'фæстаг бавæрд',
+'badretype' => 'Цы паролтæ бафыстай, уыдон æмхуызæн не сты.',
 'userexists' => 'Уыцы фæсномыг нæвдæлон у.
 Дæ хорзæхæй, равзар æндæр.',
 'loginerror' => 'Бахизыны рæдыд',
+'createacct-error' => 'Аккаунт аразыны рæдыд',
 'createaccounterror' => 'Нæ рауадис аккаунт саразын: $1',
 'nocookiesnew' => 'Аккаунт арæзт æрцыдис, фæлæ ды нырмæ нæ дæ хызт мидæмæ. 
 {{SITENAME}} архайы cookies-æй цæмæй архайджыты æвзара.
@@ -651,7 +683,7 @@ $2',
 'nouserspecified' => 'Ды хъуамæ зæгъай дæ фæсномыг.',
 'login-userblocked' => 'Ацы архайæг хъодыгонд у. Нæй гæнæн бахизын.',
 'wrongpassword' => 'Цы пароль ныффыстай, уый раст нæу.
\9bæмбÑ\8bнæгæй Ð½Ñ\8bÑ\84Ñ\84Ñ\8bÑ\81Ñ\81 Ð´Ã¦ Ð¿Ð°Ñ\80олÑ\8c',
\94æ Ñ\85оÑ\80зæÑ\85æй, Ð½Ð¾Ð³Ã¦Ð¹ Ð±Ð°Ñ\84æлваÑ\80.',
 'wrongpasswordempty' => 'Пароль афтид у.
 Бафæлвар ногæй.',
 'passwordtooshort' => 'Паролтæ хъуамæ уой уæддæр {{PLURAL:$1|1 дамгъæйы|$1 дамгъæйы}} дæргъæн.',
@@ -707,13 +739,13 @@ $2',
 Цæмæй кæронмæ бахизай системæмæ, уый тыххæй ам хъуамæ сæвæрай ног пароль.',
 'resetpass_text' => '<!-- Бахæсс дæ текст ам -->',
 'resetpass_header' => 'Аккаунты пароль ивын',
-'oldpassword' => 'РаздæÑ\80Ñ\8b пароль:',
+'oldpassword' => 'Ð\97æÑ\80онд пароль:',
 'newpassword' => 'Нæуæг пароль:',
 'retypenew' => 'Ног пароль ногæй бафысс:',
 'resetpass_submit' => 'Пароль сæвæрын æмæ системæмæ бахизын',
 'resetpass_success' => 'Дæ пароль ивд æрцыд!
 Ныр ды хизыс системæмæ...',
-'resetpass_forbidden' => 'Пароль баивæн нæй',
+'resetpass_forbidden' => 'Паролæн баивæн нæй',
 'resetpass-no-info' => 'Ды хъуамæ системæмæ хызт уай, цæмæй ацы фарсмæ комкоммæ бавналай.',
 'resetpass-submit-loggedin' => 'Пароль фæивын',
 'resetpass-submit-cancel' => 'Ныууадзын',
@@ -723,9 +755,10 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'Пароль раппарæн',
-'passwordreset-text' => 'Ð\91айдзаг ÐºÃ¦Ð½ Ð°Ñ\86Ñ\8b Ñ\84оÑ\80мæ, Ñ\86æмæй Ñ\80айÑ\81ай Ð´Ã¦ Ð°ÐºÐºÐ°Ñ\83нÑ\82Ñ\8b Ð±Ð°Ñ\85изæнÑ\82æ Ñ\80Ñ\8bмÑ\8bÑ\81æн e-mail.',
+'passwordreset-text' => 'Ð\91айдзаг ÐºÃ¦Ð½ Ð°Ñ\86Ñ\8b Ñ\84оÑ\80мæ, Ñ\86æмæй Ñ\80айÑ\81ай Ð´Ã¦ Ð¿Ð°Ñ\80олÑ\8c Ð½Ð¾Ð³Ã¦Ð¹ Ñ\81æвæÑ\80ай.',
 'passwordreset-legend' => 'Пароль раппарын',
 'passwordreset-disabled' => 'Парол фæлварын ацы викийы хицæн у.',
+'passwordreset-emaildisabled' => 'Электрон пост ацы викийы хицæн у.',
 'passwordreset-pretext' => '{{PLURAL:$1||Дæлдæр цы рардты хæйттæ ис, уыдонæй иу бафысс}}',
 'passwordreset-username' => 'Фæсномыг:',
 'passwordreset-domain' => 'Домен:',
@@ -733,13 +766,13 @@ $2',
 'passwordreset-capture-help' => 'Кæд сæвæрай ацы нысан, уæд дын e-mail (рæстæгмæ паролимæ) æвдыст æрцæудзæн. Архайæгмæ дæр æрвыст æрцæудзæн.',
 'passwordreset-email' => 'Электрон посты адрис:',
 'passwordreset-emailtitle' => '{{grammar:genitive|{{SITENAME}}}} акканты тыххæй',
-'passwordreset-emailtext-ip' => 'ЧидæÑ\80 (Ñ\83æÑ\86Ñ\86æгæн Ð´Ñ\8b, $1 IP Ð°Ð´Ñ\80иÑ\81æй) Ã¦Ñ\80домдÑ\82а Ð´Ã¦ {{grammar:genitive|{{SITENAME}}}} ($4) Ð°ÐºÐºÐ°Ñ\83нÑ\82Ñ\8b Ñ\82Ñ\8bÑ\85Ñ\85æй Ð´ÐµÑ\82алÑ\8cÑ\82æ. Ð\90Ñ\86Ñ\8b Ð°Ñ\80Ñ\85айæджÑ\8b {{PLURAL:$3|аккаÑ\83нÑ\82 Ð±Ð°Ñ\81Ñ\82 Ñ\83|аккаÑ\83нÑ\82Ñ\82æ Ð±Ð°Ñ\81Ñ\82 Ñ\81Ñ\82Ñ\8b}} Ð°Ñ\86Ñ\8b e-mail адрисимæ:
+'passwordreset-emailtext-ip' => 'ЧидæÑ\80 (Ñ\83æÑ\86Ñ\86æгæн Ð´Ñ\8b, $1 IP Ð°Ð´Ñ\80иÑ\81æй) Ã¦Ñ\80домдÑ\82а Ð´Ã¦ {{grammar:genitive|{{SITENAME}}}} ($4) Ð¿Ð°Ñ\80олÑ\8c Ð½Ð¾Ð³Ã¦Ð¹ Ñ\81æвæÑ\80Ñ\8bн. Ð\90Ñ\86Ñ\8b Ð°Ñ\80Ñ\85айæджÑ\8b {{PLURAL:$3|аккаÑ\83нÑ\82 Ð±Ð°Ñ\81Ñ\82 Ñ\83|аккаÑ\83нÑ\82Ñ\82æ Ð±Ð°Ñ\81Ñ\82 Ñ\81Ñ\82Ñ\8b}} Ð°Ñ\86Ñ\8b Ñ\8dлекÑ\82Ñ\80он Ð¿Ð¾Ñ\81Ñ\82Ñ\8b адрисимæ:
 
 $2
 
 {{PLURAL:$3|Ацы рæстæгмæ пароль|Ацы рæстæгмæ паролтæ}} кусдзысты {{PLURAL:$5|иу бон|$5 боны}}.
 Ныр ды хъуамæ бахизай системæмæ æмæ равзарай ног пароль. Кæд ай æндæр чидæр æрдомдта, кæнæ кæд дæ пароль æрхъуыды кодтай æмæ дæ нал фæды фæивай йæ, уæд дæ бон у мацæмæ дарай ацы фыстæг æмæ дарддæр архайай дæ зæронд паролæй.',
-'passwordreset-emailtext-user' => '{{grammar:genitive|{{SITENAME}}}} архайæг $1 æрдомдта дæ {{grammar:genitive|{{SITENAME}}}} ($4) аккаунты тыххæй детальтæ. Ацы архайæджы {{PLURAL:$3|аккаунт баст у|аккаунттæ баст сты}} ацы e-mail адрисимæ:
+'passwordreset-emailtext-user' => '{{grammar:genitive|{{SITENAME}}}} архайæг $1 æрдомдта дæ {{grammar:genitive|{{SITENAME}}}} ($4) аккаунты пароль ногæй сæвæрын. Ацы архайæджы {{PLURAL:$3|аккаунт баст у|аккаунттæ баст сты}} ацы электрон посты адрисимæ:
 
 $2
 
@@ -747,9 +780,9 @@ $2
 Ныр ды хъуамæ бахизай системæмæ æмæ равзарай ног пароль. Кæд ай æндæр чидæр æрдомдта, кæнæ кæд дæ пароль æрхъуыды кодтай æмæ дæ нал фæды фæивай йæ, уæд дæ бон у мацæмæ дарай ацы фыстæг æмæ дарддæр архайай дæ зæронд паролæй.',
 'passwordreset-emailelement' => 'Фæсномыг: $1
 Рæстæгмæ пароль: $2',
-'passwordreset-emailsent' => 'Æрхъуыдыгæнæн e-mail æрвыст æрцыд',
-'passwordreset-emailsent-capture' => 'Æрхъуыдыгæнæн e-mail æрвыст æрцыд æмæ бындæр æвдыст у.',
-'passwordreset-emailerror-capture' => 'Æрхъуыдыгæнæн e-mail арæзт æрцыд æмæ бындæр æвдыст у. Фæлæ йæ арвитын нæ бантыстис: $1',
+'passwordreset-emailsent' => 'Ног пароль сæвæрыны фыстæг æрвыст æрцыд.',
+'passwordreset-emailsent-capture' => 'Ног пароль сæвæрыны фыстæг æрвыст æрцыд æмæ бындæр æвдыст у.',
+'passwordreset-emailerror-capture' => 'Ног пароль сæвæрыны фыстæг арæзт æрцыд æмæ бындæр æвдыст у. Фæлæ йæ {{grammar:allative|{{GENDER:$2|user}}}} арвитын нæ бантыстис: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'E-mail адрис фæивын',
@@ -801,7 +834,7 @@ $2
 Кæд ногæй равзарай \"{{int:savearticle}}\", уæд ивд æнæ уымæй бавæрд уыдзæнис.",
 'summary-preview' => 'Ивд афыст уыдзæн:',
 'subject-preview' => 'Темæ/сæр:',
-'blockedtitle' => 'Архайæг хъодыгонд æрцыд',
+'blockedtitle' => 'Архайæг хъодыгонд у',
 'blockedtext' => "'''Дæ фæсномыг кæнæ дæ IP адрис блокгонд æрцыд.'''
 
 Блок скодта $1.
@@ -887,7 +920,7 @@ $2
 'moveddeleted-notice' => 'Ацы фарс хафт уыдис.
 Уый тыххæй бындæр ис хафын æмæ номивыны логтæй фыст.',
 'edit-conflict' => 'Ивдтыты конфликт.',
-'edit-already-exists' => 'Ног фарс скæнæн нæй. Ахæм фарс ис.',
+'edit-already-exists' => 'Ð\9dог Ñ\84аÑ\80Ñ\81 Ñ\81кæнæн Ð½Ã¦Ð¹. Ð\90Ñ\85æм Ñ\84аÑ\80Ñ\81 Ð½Ñ\8bÑ\80ид Ð¸Ñ\81.',
 
 # Content models
 'content-model-wikitext' => 'викитекст',
@@ -905,14 +938,14 @@ $2
 
 # History pages
 'viewpagelogs' => 'Ацы фарсæн йæ логтæ равдисын',
-'nohistory' => 'Ð\90Ñ\86Ñ\8b Ñ\84аÑ\80Ñ\81æн Ð¸Ð²Ð²Ð´Ð·Ð¸Ð½Ã¦Ð´ты истори нæй.',
-'currentrev' => 'Ð\9dÑ\8bÑ\80Ñ\8bккон фæлтæр',
+'nohistory' => 'Ð\90Ñ\86Ñ\8b Ñ\84аÑ\80Ñ\81æн Ð¸Ð²Ð´Ñ\82Ñ\8bты истори нæй.',
+'currentrev' => 'ФæÑ\81Ñ\82аг фæлтæр',
 'currentrev-asof' => 'Нырыккон фæлтæр $1',
 'revisionasof' => 'Фæлтæр $1',
 'revision-info' => 'Фæлтæр $1; $2',
 'previousrevision' => '← Зæронддæр фæлтæр',
 'nextrevision' => 'Ногдæр фæлтæр →',
-'currentrevisionlink' => 'Ð\9dÑ\8bÑ\80Ñ\8bккон фæлтæр',
+'currentrevisionlink' => 'ФæÑ\81Ñ\82аг фæлтæр',
 'cur' => 'ныр.',
 'next' => 'иннæ',
 'last' => 'раз.',
@@ -928,8 +961,8 @@ $2
 'historyempty' => '(афтид)',
 
 # Revision feed
-'history-feed-title' => 'Ивддзинæдты истори',
-'history-feed-item-nocomment' => '$1 $2',
+'history-feed-title' => 'Ивдтыты истори',
+'history-feed-item-nocomment' => '$1, $2',
 
 # Revision deletion
 'rev-deleted-comment' => '(ивды афыст хафт у)',
@@ -997,7 +1030,7 @@ $2
 'search-redirect' => '({{grammar:ablative|$1}} æрвыст)',
 'search-section' => '(хай $1)',
 'search-suggest' => 'Кæд мыййаг агурыс: $1',
-'search-interwiki-caption' => 'Ã\86Ñ\84Ñ\81Ñ\8bмæÑ\80он проекттæ',
+'search-interwiki-caption' => 'Ã\86Ñ\80вадæл проекттæ',
 'search-interwiki-default' => '{{grammar:genitive|$1}} фæстиуджытæ:',
 'search-interwiki-more' => '(нодзы)',
 'search-relatedarticle' => 'Хæстæг',
@@ -1015,7 +1048,7 @@ $2
 'preferences' => 'Уагæвæрдтæ',
 'mypreferences' => 'Уагæвæрдтæ',
 'prefs-edits' => 'Ивдтыты нымæц:',
-'prefsnologin' => 'Системæйæн дæхи нæ бацамыдтай',
+'prefsnologin' => 'Системæйы нæ дæ',
 'changepassword' => 'Пароль ивæн',
 'prefs-skin' => 'Цъар',
 'skin-preview' => 'Разæркаст',
@@ -1059,7 +1092,7 @@ $2
 'username' => 'Фæсномыг:',
 'uid' => 'Архайæджы ID:',
 'yourrealname' => 'Æцæг ном:',
-'yourlanguage' => 'Техникон фыстыты æвзаг:',
+'yourlanguage' => 'Æвзаг:',
 'yourvariant' => 'Мидисы æвзаджы вариант:',
 'yournick' => 'Ног къухæрфыст:',
 'badsiglength' => 'Æгæр даргъ къухæрфыст, хъуамæ {{PLURAL:$1|дамгъæйæ|дамгъæйæ}} къаддæр уа.',
@@ -1099,7 +1132,7 @@ $2
 'group-bot' => 'Роботтæ',
 'group-sysop' => 'Админтæ',
 'group-bureaucrat' => 'Бюрократтæ',
-'group-all' => '(æппæт)',
+'group-all' => '(иууылдæр)',
 
 'group-user-member' => '{{GENDER:$1|архайæг}}',
 'group-autoconfirmed-member' => '{{GENDER:$1|хæдсгарст архайæг}}',
@@ -1119,8 +1152,8 @@ $2
 'right-read' => 'Фæрстæ кæсын',
 'right-edit' => 'Фæрстæ ивын',
 'right-move' => 'Фæрсты нæмттæ ивын',
-'right-move-subpages' => 'фæрсты æмæ сæ дæлфæрсты нæмттæ ивын',
-'right-movefile' => 'файлты нæмттæ ивын',
+'right-move-subpages' => 'Фæрстæ æмæ сæ дæлфæрсты нæмттæ ивын',
+'right-movefile' => 'Файлты нæмттæ ивын',
 'right-upload' => 'Файлтæ æвгæнын',
 'right-upload_by_url' => 'Бавгæнын файлтæ интернетæй',
 'right-delete' => 'Фæрстæ хафын',
@@ -1155,7 +1188,7 @@ $2
 'rcnotefrom' => "Бындæр сты æвдыст ивдтытæ '''$2'''-æй ('''{{grammar:genitive|$1}}''' йонг).",
 'rclistfrom' => 'Равдисын ивдтытæ амæй фæстæ: $1',
 'rcshowhideminor' => '$1 чысыл ивдтытæ',
-'rcshowhidebots' => '$1 роботты куыст',
+'rcshowhidebots' => '$1 роботты',
 'rcshowhideliu' => '$1, йæхи чи бацамыдта, уыцы архайджыты',
 'rcshowhideanons' => '$1 æнæном архайджыты',
 'rcshowhidepatr' => '$1 бæрæггонд ивдтæ',
@@ -1188,13 +1221,13 @@ $3',
 # Upload
 'upload' => 'Бавгæнын файл',
 'uploadbtn' => 'Файл бавгæнын',
-'uploadnologin' => 'СиÑ\81Ñ\82емæйæн Ð´Ã¦Ñ\85и Ð½Ã¦ Ð±Ð°Ñ\86амÑ\8bдÑ\82ай',
-'uploaderror' => 'Файл сæвæрыны рæдыд',
+'uploadnologin' => 'СиÑ\81Ñ\82емæмæ Ñ\85Ñ\8bзÑ\82 Ð½Ã¦ Ð´Ã¦',
+'uploaderror' => 'Файл бавгæныны рæдыд',
 'uploadlogpage' => 'Æвгæндты лог',
 'filename' => 'Файлы ном',
 'filedesc' => 'Афыст:',
 'minlength1' => 'Файлы номы хъуамæ æппынкъаддæр иу дамгъæ уа.',
-'badfilename' => 'Ð\9dÑ\8bвÑ\8b Ð½Ð¾Ð¼ Ð¸Ð²Ð´ Ã¦Ñ\80Ñ\86Ñ\8bдиÑ\81. Ð\9dÑ\8bÑ\80 Ñ\85Ñ\83инÑ\8b Â«$1».',
+'badfilename' => 'ФайлÑ\8b Ð½Ð¾Ð¼ Ð¸Ð²Ð´ Ã¦Ñ\80Ñ\86Ñ\8bд {{grammar:allative|«$1»}}.',
 'savefile' => 'Файл бавæрын',
 'uploadedimage' => 'бавгæдта "[[$1]]"',
 'uploadvirus' => 'Файлы ис вирус! 
@@ -1208,7 +1241,7 @@ $3',
 'license-header' => 'Лицензи',
 
 # Special:ListFiles
-'listfiles' => 'Ð\9dÑ\8bвты номхыгъд',
+'listfiles' => 'Файлты номхыгъд',
 'listfiles_thumb' => 'Къаддæргонд',
 'listfiles_date' => 'Датæ',
 'listfiles_name' => 'Ном',
@@ -1739,11 +1772,6 @@ $3',
 'version-poweredby-others' => 'æндæртæ',
 'version-software-version' => 'Верси',
 
-# Special:FilePath
-'filepath' => 'Файлмæ фæт',
-'filepath-page' => 'Файл:',
-'filepath-submit' => 'Бацæуын',
-
 # Special:FileDuplicateSearch
 'fileduplicatesearch-filename' => 'Файлы ном:',
 'fileduplicatesearch-submit' => 'Агурын',
index 62c753d..d755b6a 100644 (file)
@@ -1649,6 +1649,15 @@ to upload files.',
 'listusers-noresult' => 'ਕੋਈ ਯੂਜ਼ਰ ਨਹੀਂ ਲੱਭਿਆ।',
 'listusers-blocked' => '(ਪਾਬੰਦੀਸ਼ੁਦਾ)',
 
+# Special:ActiveUsers
+'activeusers' => 'ਚੁਸਤ ਮੈਂਬਰਾਂ ਦੀ ਲਿਸਟ',
+'activeusers-intro' => 'ਇਹ ਓਹਨਾਂ ਮੈਂਬਰਾਂ ਦੀ ਲਿਸਟ ਹੈ ਜਿੰਨ੍ਹਾਂ ਨੇ ਆਖ਼ਰੀ $1 {{PLURAL:$1|ਦਿਨ|ਦਿਨਾਂ}} ਵਿਚ ਕਿਸੇ ਤਰ੍ਹਾਂ ਦਾ ਕੋਈ ਕੰਮ ਕੀਤਾ ਹੈ।',
+'activeusers-count' => 'ਆਖ਼ਰੀ {{PLURAL:$3|ਦਿਨ|$3 ਦਿਨਾਂ}} ਵਿਚ $1 {{PLURAL:$1|ਸੋਧ|ਸੋਧਾਂ}}',
+'activeusers-from' => 'ਇਸਤੋਂ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲ਼ੇ ਮੈਂਬਰ ਵਖਾਓ:',
+'activeusers-hidebots' => 'ਬੋਟਾਂ ਨੂੰ ਲੁਕਾਓ',
+'activeusers-hidesysops' => 'ਐਡਮਨਿਸਟ੍ਰੇਟਰ ਲੁਕਾਓ',
+'activeusers-noresult' => 'ਕੋਈ ਮੈਂਬਰ ਨਹੀਂ ਲੱਭਿਆ।',
+
 # Special:ListGroupRights
 'listgrouprights-group' => 'ਗਰੁੱਪ',
 'listgrouprights-rights' => 'ਹੱਕ',
index a237218..d1cb154 100644 (file)
@@ -717,12 +717,17 @@ Nie zapomnij dostosować [[Special:Preferences|preferencji]].',
 'yourname' => 'Nazwa {{GENDER:|użytkownika|użytkowniczki}}',
 'userlogin-yourname' => 'Nazwa użytkownika',
 'userlogin-yourname-ph' => 'Wprowadź swoją nazwę użytkownika',
+'createacct-helpusername-url' => '{{ns:Project}}:Nazwa_użytkownika',
+'createacct-helpusername-link' => '[[{{MediaWiki:createacct-helpusername-url}}|(pomóż mi wybrać)]]',
 'yourpassword' => 'Hasło',
 'userlogin-yourpassword' => 'Hasło',
 'userlogin-yourpassword-ph' => 'Wpisz swoje hasło',
+'createacct-yourpassword-ph' => 'Wprowadź hasło',
 'yourpasswordagain' => 'Powtórz hasło',
+'createacct-yourpasswordagain' => 'Potwierdź hasło',
+'createacct-yourpasswordagain-ph' => 'Wprowadź hasło jeszcze raz',
 'remembermypassword' => 'Zapamiętaj moje hasło na tym komputerze (maksymalnie przez $1 {{PLURAL:$1|dzień|dni}})',
-'userlogin-remembermypassword' => 'Zapamiętaj mnie',
+'userlogin-remembermypassword' => 'Nie wylogowuj mnie',
 'userlogin-signwithsecure' => 'Zaloguj się na bezpiecznym serwerze',
 'securelogin-stick-https' => 'Po zalogowaniu utrzymuj połączenie poprzez HTTPS',
 'yourdomainname' => 'Twoja domena',
@@ -746,11 +751,20 @@ Nie zapomnij dostosować [[Special:Preferences|preferencji]].',
 'userlogin-resetlink' => 'Zapomniałeś danych do zalogowania się?',
 'helplogin-url' => 'Help:Logowanie',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Pomoc z logowaniem]]',
+'createacct-join' => 'Wpisz poniżej swoje dane.',
 'createacct-emailrequired' => 'Adres e‐mail',
 'createacct-emailoptional' => 'Adres e-mail (opcjonalnie)',
+'createacct-email-ph' => 'Wpisz swój adres e-mail',
 'createaccountmail' => 'Użyj tymczasowego hasła wygenerowanego losowo i wyślij je na podany poniżej adres e-mail',
+'createacct-realname' => 'Prawdziwe imię i nazwisko (opcjonalnie)',
 'createaccountreason' => 'Powód',
 'createacct-reason' => 'Powód',
+'createacct-reason-ph' => 'Dlaczego zakładasz kolejne konto',
+'createacct-submit' => 'Utwórz konto',
+'createacct-benefit-heading' => '{{grammar:4sg|{{SITENAME}}}} tworzą ludzie tacy jak ty.',
+'createacct-benefit-body1' => '{{PLURAL:{{NUMBEROFEDITS:R}}|edycja|edycje|edycji}}',
+'createacct-benefit-body2' => '{{PLURAL:{{NUMBEROFEDITS:R}}|strona|strony|stron}}',
+'createacct-benefit-body3' => '{{PLURAL:{{NUMBEROFEDITS:R}}|użytkownik|użytkowników}} w ostatnim czasie',
 'badretype' => 'Wprowadzone hasła różnią się między sobą.',
 'userexists' => 'Wybrana przez Ciebie nazwa użytkownika jest już zajęta.
 Wybierz inną nazwę użytkownika.',
@@ -878,7 +892,7 @@ Powinieneś zalogować się i zmienić hasło na nowe. Jeśli to ktoś inni popr
 Tymczasowe hasło – $2',
 'passwordreset-emailsent' => 'E‐mail pozwalający na zresetowanie hasła został wysłany.',
 'passwordreset-emailsent-capture' => 'Wyświetlony poniżej e‐mail pozwalający na zresetowanie hasła został wysłany.',
-'passwordreset-emailerror-capture' => 'Poniżej wyświetlony e‐mail pozwalający na zresetowanie hasła został wygenerowany, ale nie udało się wysłać go do użytkownika: $1',
+'passwordreset-emailerror-capture' => 'Poniżej wyświetlony e‐mail pozwalający na zresetowanie hasła został wygenerowany, ale nie udało się wysłać go do {{GENDER:$2|użytkownika|użytkowniczki}}: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'Zmiana adresu e‐mail',
@@ -1101,7 +1115,7 @@ Strona już istnieje.',
 'invalid-content-data' => 'Zawartość strony zawiera nieprawidłowe dane',
 'content-not-allowed-here' => 'Zawartość tego typu ($1) nie jest dozwolona na stronie [[$2]]',
 'editwarning-warning' => 'Opuszczenie tej strony może spowodować utratę wprowadzonych przez Ciebie zmian.
-Jeśli jesteś zalogowany możesz wyłączyć wyświetlanie tego ostrzeżenia w zakładce {{int:prefs-editing}} w swoich preferencjach.',
+Jeśli jesteś zalogowany możesz wyłączyć wyświetlanie tego ostrzeżenia w zakładce Edycja w swoich preferencjach.',
 
 # Content models
 'content-model-wikitext' => 'wikitekst',
@@ -2271,6 +2285,15 @@ Wymaga podania co najmniej domeny najwyższego poziomu np. „*.org”.<br />
 'listusers-noresult' => 'Nie znaleziono żadnego użytkownika.',
 'listusers-blocked' => '({{GENDER:$1|zablokowany|zablokowana|zablokowany}})',
 
+# Special:ActiveUsers
+'activeusers' => 'Lista aktywnych użytkowników',
+'activeusers-intro' => 'Poniżej znajduje się lista użytkowników, którzy byli aktywni w ciągu {{PLURAL:$1|ostatniego dnia|ostatnich $1 dni}}.',
+'activeusers-count' => 'w ciągu {{PLURAL:$3|ostatniego dnia|ostatnich $3 dni}} {{GENDER:$2|wykonał|wykonała|wykonał}} $1 {{PLURAL:$1|edycję|edycje|edycji}}',
+'activeusers-from' => 'Pokaż użytkowników zaczynając od',
+'activeusers-hidebots' => 'Ukryj boty',
+'activeusers-hidesysops' => 'Ukryj administratorów',
+'activeusers-noresult' => 'Nie odnaleziono żadnego użytkownika.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Uprawnienia grup użytkowników',
 'listgrouprights-summary' => 'Poniżej znajduje się spis zdefiniowanych na tej wiki grup użytkowników, z wyszczególnieniem przydzielonych im uprawnień.
index ba4f9d1..f117acb 100644 (file)
@@ -126,12 +126,12 @@ $messages = array(
 'november' => 'novèmber',
 'december' => 'dzèmber',
 'january-gen' => 'gené',
-'february-gen' => 'Fërvé',
-'march-gen' => 'Mars',
-'april-gen' => 'Avril',
-'may-gen' => 'Magg',
-'june-gen' => 'Giugn',
-'july-gen' => 'Luj',
+'february-gen' => 'fërvé',
+'march-gen' => 'mars',
+'april-gen' => 'avril',
+'may-gen' => 'maj',
+'june-gen' => 'giugn',
+'july-gen' => 'luj',
 'august-gen' => 'Aost',
 'september-gen' => 'Stèmber',
 'october-gen' => 'Otóber',
@@ -1974,6 +1974,15 @@ A-i é dabzògn almanch d\'un domini a livel pi àut, për esempi "*.org".<br />
 'listusers-noresult' => 'Gnun utent përparèj.',
 'listusers-blocked' => '(blocà)',
 
+# Special:ActiveUsers
+'activeusers' => "Lista dj'utent ativ",
+'activeusers-intro' => "Costa a l'é na lista d'utent ch'a l'han avù n'atività qualsëssìa ant j'ùltim $1 {{PLURAL:$1|di|di}}.",
+'activeusers-count' => "$1 {{PLURAL:$1|modìfica neuva|modìfiche neuve}} ant {{PLURAL:$3|l'ùltim di|j'ùltim $3 di}}",
+'activeusers-from' => "Smon-me j'utent a parte da:",
+'activeusers-hidebots' => 'Stërmé ij trigomiro',
+'activeusers-hidesysops' => "Stërmé j'aministrator",
+'activeusers-noresult' => 'Pa gnun utent trovà.',
+
 # Special:ListGroupRights
 'listgrouprights' => "Drit dël grup d'utent",
 'listgrouprights-summary' => "Ambelessì a-i é na lista dle partìe d'utent definìe ansima a costa wiki, con ij sò drit d'acess associà.
@@ -2198,7 +2207,7 @@ Ambelessì a-i son j'ampostassion atuaj për la pàgina '''$1''':",
 'protect-cascadeon' => "Sta pàgina për adess a l'é blocà përchè a-i intra ant {{PLURAL:$1|la pàgina sì-sota, ch'a l'ha|le-pàgine sì sota, ch'a l'han}} na protession a sàut anvisca. A peul cambie-je sò livel ëd protession a sta pàgina-sì ma lòn a tochërà pa la protession a sàut.",
 'protect-default' => "Autorisé tùit j'utent",
 'protect-fallback' => "Përmëtt mach a j'utent con ël përmess «$1»",
-'protect-level-autoconfirmed' => "Përmëtt mach j'utent autoconfirmà",
+'protect-level-autoconfirmed' => "Përmëtte mach j'utent autoconfirmà",
 'protect-level-sysop' => "Përmëtt mach a j'aministrator",
 'protect-summary-cascade' => 'a sàut',
 'protect-expiring' => 'scadensa: $1 (UTC)',
index 70b9108..c3063b8 100644 (file)
@@ -512,6 +512,7 @@ $1',
 'actionthrottled' => 'د دې کړنې مخنيوی وشو',
 'protectedpagetext' => 'دا مخ د سمون او نورو کړنو د ترسره کولو په تکل ژغورل شوی.',
 'viewsourcetext' => 'تاسې د دې مخ سرچينه کتلی او لمېسلی شی:',
+'viewyourtext' => "تاسې په دې مخ کې د '''خپلو سمونونو''' سرچينه کتلی او لمېسلی شی:",
 'protectedinterface' => 'دا مخ د دې ويکي د ساوترې د ليدنمخ متن لري، او د ورانکارۍ په خاطر ژغورل شوی.
 په ټولو ويکي ګانو کې د ژباړې د ورګډولو او يا هم د ژباړې د سمون او بدلون لپاره د مېډياويکي د ځايتابه پروژه [//translatewiki.net/ translatewiki.net] وکاروۍ.',
 'editinginterface' => "'''ګواښنه:''' تاسو په يوه داسې مخ کې بدلون راولی کوم چې د يوې پوستکالی د ليدنمخ متن په توګه کارېږي.
@@ -537,17 +538,24 @@ $1',
 تاسې کولای شی چې د کارن-نوم نه پرته په ورکنومي توګه {{SITENAME}} وکاروی، او يا هم په همدې او يا کوم بل کارن-نوم، يو ځل <span class='plainlinks'>[$1 بيا غونډال ته ورننوځۍ]</span>.
 دا په پام کې وساتۍ چې تر څو تاسې د خپل کتنمل حافظه نه وي سپينه کړې، نو ځينې مخونو کې به لا تر اوسه پورې په غونډال کې ننوتي ښکارۍ.",
 'welcomeuser' => '$1، ښه راغلې!',
+'welcomecreation-msg' => 'ګڼون مو جوړ شو.
+د [[Special:Preferences|{{SITENAME}} غوره توبونه]] بدلول مو مه هېروۍ.',
 'yourname' => 'کارن-نوم:',
 'userlogin-yourname' => 'کارن-نوم',
 'userlogin-yourname-ph' => 'کارن-نوم مو وليکۍ',
 'yourpassword' => 'پټنوم:',
 'userlogin-yourpassword' => 'پټنوم',
 'userlogin-yourpassword-ph' => 'پټنوم مو وليکۍ',
+'createacct-yourpassword-ph' => 'پټنوم مو وټاپۍ',
 'yourpasswordagain' => 'پټنوم بيا وليکه',
+'createacct-yourpasswordagain' => 'پټنوم مو تاييد کړۍ',
+'createacct-yourpasswordagain-ph' => 'پټنوم مو بيا وټاپۍ',
 'remembermypassword' => 'زما پټنوم په دې کمپيوټر (تر $1 {{PLURAL:$1|ورځې|ورځو}}) په ياد وساته!',
-'userlogin-remembermypassword' => 'ما په ياد لره',
+'userlogin-remembermypassword' => 'غونډال کې مې ننوتلی وساته',
+'userlogin-signwithsecure' => 'د خوندي پالنګر په مرسته ننوتل',
 'securelogin-stick-https' => 'وروسته د ننوتلو HTTPS سره تړلی پاتې کېدل',
 'yourdomainname' => 'ستاسې شپول:',
+'password-change-forbidden' => 'تاسې په دې ويکي باندې خپل پټنوم نه شی بدلولی.',
 'login' => 'ننوتل',
 'nav-login-createaccount' => 'ننوتل / ګڼون جوړول',
 'loginprompt' => 'ددې لپاره چې {{SITENAME}} کې ننوځۍ نو بايد ستاسې د کمپيوټر کوکيز چارن وي.',
@@ -564,12 +572,26 @@ $1',
 'gotaccount' => 'آيا وار دمخې يو ګڼون لری؟ $1.',
 'gotaccountlink' => 'ننوتل',
 'userlogin-resetlink' => 'د ننوتلو مالومات مو هېر شوي؟',
+'createacct-emailrequired' => 'برېښليک پته',
+'createacct-emailoptional' => 'برېښليک پته (اختياري)',
+'createacct-email-ph' => 'برېښليک پته مو وټاپۍ',
 'createaccountmail' => 'يو لنډمهاله ناټاکلی پټنوم کارول او په لاندې ورکړل شوې برېښليک پته کې ورلېږل',
+'createacct-realname' => 'آر نوم (اختياري)',
 'createaccountreason' => 'سبب:',
+'createacct-reason' => 'سبب',
+'createacct-reason-ph' => 'ولې تاسې بل ګڼون جوړول غوااړۍ',
+'createacct-captcha-help-url' => '{{ns:Project}}:د يو ګڼون غوښتنه',
+'createacct-imgcaptcha-ph' => 'پورته تاسې ته ښکاره شوی متن وټاپۍ',
+'createacct-submit' => 'ګڼون مو جوړ کړۍ',
+'createacct-benefit-heading' => '{{SITENAME}} ستاسې په شان خلکو لخوا جوړ شوی.',
+'createacct-benefit-body1' => 'سمونونه',
+'createacct-benefit-body2' => 'مخونه',
+'createacct-benefit-body3' => 'وروستني ونډه وال',
 'badretype' => 'دا پټنوم چې تاسې ليکلی د مخکني پټنوم سره ورته نه دی.',
 'userexists' => 'کوم کارن نوم چې تاسې ورکړی هغه بل چا کارولی.
 لطفاً يو بل نوم وټاکۍ.',
 'loginerror' => 'د ننوتنې ستونزه',
+'createacct-error' => 'د ګڼون جوړېدنې ستونزه',
 'createaccounterror' => 'ګڼون مو جوړ نه شو: $1',
 'nocookiesnew' => 'ستاسې ګڼون جوړ شو، خو تاسې لا غونډال ته نه ياست ورننوتلي.
 {{SITENAME}} کې د ننوتلو لپاره کوکيز کارېږي.
@@ -1594,6 +1616,15 @@ $1',
 'listusers-noresult' => 'هېڅ کوم کارن و نه موندل شو.',
 'listusers-blocked' => '(بنديز لګېدلی)',
 
+# Special:ActiveUsers
+'activeusers' => 'د فعالو کارنانو لړليک',
+'activeusers-intro' => 'دا د هغو کارنانو لړليک دی چې په {{PLURAL:$1|تېرې|تېرو}} $1 {{PLURAL:$1|ورځ|ورځو}} کې يې ونډې ترسره کړي.',
+'activeusers-count' => 'په {{PLURAL:$3|تېرې ورځ|تېرو $3 ورځو}} کې $1 {{PLURAL:$1|سمون|سمونونه}}',
+'activeusers-from' => 'هغه کارنان کتل چې نومونه يې پېلېږي په:',
+'activeusers-hidebots' => 'روباټونه پټول',
+'activeusers-hidesysops' => 'پازوالان پټول',
+'activeusers-noresult' => 'کارن و نه موندل شو.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'د کارن ډلو رښتې',
 'listgrouprights-group' => 'ډله',
@@ -2019,6 +2050,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 
 # Export
 'export' => 'مخونه صادرول',
+'exportall' => 'ټول مخونه صادرول',
 'export-submit' => 'صادرول',
 'export-addcattext' => 'مخونو د ورګډولو وېشنيزه:',
 'export-addcat' => 'ورګډول',
@@ -2178,7 +2210,9 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'skinname-vector' => 'وېکټور',
 
 # Patrolling
+'markaspatrolleddiff' => 'دا مخ څارل شوی په نخښه کول',
 'markaspatrolledtext' => 'دا مخ څارل شوی په نخښه کول',
+'markedaspatrolled' => 'دا مخ څارل شوی په نخښه کول',
 
 # Image deletion
 'filedeleteerror-short' => 'د دوتنې د ړنګولو ستونزه: $1',
@@ -2220,6 +2254,7 @@ $1',
 'hours' => '{{PLURAL:$1|$1 ساعت|$1 ساعتونه}}',
 'days' => '{{PLURAL:$1|$1 ورځ|$1 ورځې}}',
 'ago' => '$1 دمخه',
+'just-now' => 'همدا اوس',
 
 # Bad image list
 'bad_image_list' => 'بڼه يې په لاندې توګه ده:
@@ -2694,6 +2729,7 @@ $5
 'api-error-filename-tooshort' => 'د دوتنې نوم ډېر لنډ دی.',
 'api-error-filetype-banned' => 'په دې ډول دوتنې بنديز دی.',
 'api-error-illegal-filename' => 'د دوتنې نوم نه دی پرېښل شوی.',
+'api-error-mustbeloggedin' => 'د دوتنو د پورته کولو لپاره بايد تاسې غونډال کې ننوتلی اوسۍ.',
 'api-error-unclassified' => 'يوه ناڅرګنده تېروتنه رامېنځته شوه.',
 'api-error-unknown-code' => 'ناڅرګنده تېروتنه: "$1"',
 'api-error-unknown-warning' => 'ناڅرګنده ګواښنه: "$1".',
index 960e386..e816614 100644 (file)
@@ -2292,6 +2292,15 @@ Veja também as [[Special:WantedCategories|categorias desejadas]].',
 'listusers-noresult' => 'Não foram encontrados utilizadores.',
 'listusers-blocked' => '(bloqueado)',
 
+# Special:ActiveUsers
+'activeusers' => 'Utilizadores activos',
+'activeusers-intro' => 'Esta é uma lista dos utilizadores com qualquer tipo de actividade {{PLURAL:$1|no último dia|nos últimos $1 dias}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|ação|ações}} {{PLURAL:$3|no último dia|nos últimos $3 dias}}',
+'activeusers-from' => 'Mostrar utilizadores começando por:',
+'activeusers-hidebots' => 'Esconder robôs',
+'activeusers-hidesysops' => 'Esconder administradores',
+'activeusers-noresult' => 'Nenhum utilizador encontrado.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Privilégios dos grupos de utilizadores',
 'listgrouprights-summary' => 'A seguinte lista contém os grupos de utilizadores definidos nesta wiki, com os respectivos privilégios de acesso.
index 3983e9d..881df1d 100644 (file)
@@ -25,6 +25,7 @@
  * @author Emufarmers
  * @author Everton137
  * @author Francisco Leandro
+ * @author Fúlvio
  * @author GKnedo
  * @author Giro720
  * @author GoEThe
@@ -325,8 +326,8 @@ $messages = array(
 'tog-hideminor' => 'Ocultar edições menores nas mudanças recentes',
 'tog-hidepatrolled' => 'Ocultar edições patrulhadas nas mudanças recentes',
 'tog-newpageshidepatrolled' => 'Ocultar páginas patrulhadas da lista de páginas novas',
-'tog-extendwatchlist' => 'Expandir a lista de páginas vigiadas para mostrar todas as alterações aplicáveis, não apenas as mais recentes',
-'tog-usenewrc' => 'Agrupar alterações por páginas nas mudanças recentes e páginas vigiadas (requer JavaScript)',
+'tog-extendwatchlist' => 'Expandir a lista de páginas vigiadas para mostrar todas as mudanças, não apenas as mais recentes',
+'tog-usenewrc' => 'Agrupar alterações por páginas nas mudanças recentes e na lista de páginas vigiadas (requer JavaScript)',
 'tog-numberheadings' => 'Auto-numerar cabeçalhos',
 'tog-showtoolbar' => 'Mostrar barra de edição (JavaScript)',
 'tog-editondblclick' => 'Editar páginas quando houver clique duplo (JavaScript)',
@@ -334,35 +335,35 @@ $messages = array(
 'tog-editsectiononrightclick' => 'Habilitar edição de seção por clique com o botão direito no título da seção (JavaScript)',
 'tog-showtoc' => 'Mostrar Tabela de Conteúdos (para páginas com mais de três cabeçalhos)',
 'tog-rememberpassword' => 'Recordar os meus dados neste navegador (por no máximo $1 {{PLURAL:$1|dia|dias}})',
-'tog-watchcreations' => 'Adicionar as páginas e arquivos que eu criar às minhas páginas vigiadas',
-'tog-watchdefault' => 'Adicionar as páginas e arquivos que eu editar às minhas páginas vigiadas',
-'tog-watchmoves' => 'Adicionar as páginas e arquivos que eu mover às minhas páginas vigiadas',
-'tog-watchdeletion' => 'Adicionar as páginas e arquivos que eu eliminar às minhas páginas vigiadas',
-'tog-minordefault' => 'Marcar todas as edições como secundárias, por padrão',
+'tog-watchcreations' => 'Adicionar as páginas e arquivos que eu criar à minha lista de páginas vigiadas',
+'tog-watchdefault' => 'Adicionar as páginas e arquivos que eu editar à minha lista de páginas vigiadas',
+'tog-watchmoves' => 'Adicionar as páginas e arquivos que eu mover à minha lista de páginas vigiadas',
+'tog-watchdeletion' => 'Adicionar as páginas e arquivos que eu eliminar à minha lista de páginas vigiadas',
+'tog-minordefault' => 'Marcar todas as edições como menores por padrão',
 'tog-previewontop' => 'Mostrar previsão antes da caixa de edição',
 'tog-previewonfirst' => 'Mostrar previsão na primeira edição',
 'tog-nocache' => 'Desativar o cache de páginas do navegador',
 'tog-enotifwatchlistpages' => 'Notificar-me por e-mail quando uma página ou arquivo vigiado for alterado',
 'tog-enotifusertalkpages' => 'Receber e-mail quando a minha página de discussão for editada',
 'tog-enotifminoredits' => 'Notificar-me por e-mail também sobre edições menores de páginas ou arquivos',
-'tog-enotifrevealaddr' => 'Revelar o meu endereço de email nas notificações',
+'tog-enotifrevealaddr' => 'Revelar meu endereço de e-mail nas mensagens de notificação',
 'tog-shownumberswatching' => 'Mostrar o número de usuários que estão vigiando',
 'tog-oldsig' => 'Assinatura existente:',
 'tog-fancysig' => 'Tratar assinatura como wikitexto (sem link automático)',
 'tog-showjumplinks' => 'Ativar links de acessibilidade "ir para"',
 'tog-uselivepreview' => 'Utilizar pré-visualização em tempo real (JavaScript) (Experimental)',
-'tog-forceeditsummary' => 'Avisar-me ao introduzir um sumário vazio',
+'tog-forceeditsummary' => 'Avisar-me ao introduzir um sumário de edição vazio',
 'tog-watchlisthideown' => 'Ocultar as minhas edições da lista de páginas vigiadas',
-'tog-watchlisthidebots' => 'Ocultar edições automatizadas por bots da lista de páginas vigiadas',
+'tog-watchlisthidebots' => 'Ocultar edições de bots da lista de páginas vigiadas',
 'tog-watchlisthideminor' => 'Ocultar edições menores da lista de páginas vigiadas',
 'tog-watchlisthideliu' => 'Ocultar edições de usuários autenticados da lista de páginas vigiadas',
 'tog-watchlisthideanons' => 'Ocultar edições de usuários anônimos da lista de páginas vigiadas',
-'tog-watchlisthidepatrolled' => 'Ocultar edições patrulhadas na lista de páginas vigiadas',
+'tog-watchlisthidepatrolled' => 'Ocultar edições patrulhadas da lista de páginas vigiadas',
 'tog-ccmeonemails' => 'Receber cópias de e-mails que eu enviar a outros usuários',
 'tog-diffonly' => 'Não mostrar o conteúdo da página ao comparar duas edições',
 'tog-showhiddencats' => 'Exibir categorias ocultas',
 'tog-noconvertlink' => 'Desabilitar conversão de títulos de links',
-'tog-norollbackdiff' => 'Omitir diferenças depois de desfazer edições em bloco',
+'tog-norollbackdiff' => 'Omitir diferenças após desfazer edições em bloco',
 'tog-useeditwarning' => 'Avisar-me quando eu deixar uma janela de edição sem ter salvo as alterações',
 
 'underline-always' => 'Sempre',
@@ -370,7 +371,7 @@ $messages = array(
 'underline-default' => 'Padrão do navegador/skin',
 
 # Font style option in Special:Preferences
-'editfont-style' => 'Estilo da fonte para a região de edição:',
+'editfont-style' => 'Estilo da fonte da área de edição:',
 'editfont-default' => 'Padrão do navegador',
 'editfont-monospace' => 'Fonte mono-espaçada',
 'editfont-sansserif' => 'Fonte sem serifa',
@@ -436,12 +437,12 @@ $messages = array(
 'category-empty' => "''No momento esta categoria não possui nenhuma página ou arquivo multimídia.''",
 'hidden-categories' => '{{PLURAL:$1|Categoria oculta|Categorias ocultas}}',
 'hidden-category-category' => 'Categorias ocultas',
-'category-subcat-count' => '{{PLURAL:$2|Esta categoria possui apenas a subcategoria a seguir.|Há, nesta categoria {{PLURAL:$1|uma subcategoria|$1 subcategorias}} (dentre um total de $2).}}',
+'category-subcat-count' => '{{PLURAL:$2|Esta categoria possui apenas a seguinte subcategoria.|Esta categoria possui {{PLURAL:$1|uma subcategoria|$1 subcategorias}}, de um total de $2.}}',
 'category-subcat-count-limited' => 'Esta categoria possui {{PLURAL:$1|a seguinte sub-categoria|as $1 sub-categorias a seguir}}.',
-'category-article-count' => '{{PLURAL:$2|Esta categoria possui apenas a página a seguir.|Há, nesta categoria, {{PLURAL:$1|a página a seguir|as $1 páginas a seguir}} (dentre um total de $2).}}',
-'category-article-count-limited' => 'Há, nesta categoria, {{PLURAL:$1|a página a seguir|as $1 páginas a seguir}}.',
-'category-file-count' => '{{PLURAL:$2|Esta categoria possui apenas o arquivo a seguir.|Há, nesta categoria, {{PLURAL:$1|o arquivo a seguir|os $1 seguintes arquivos}} (dentre um total de $2.)}}',
-'category-file-count-limited' => 'Nesta categoria há {{PLURAL:$1|um arquivo|$1 arquivos}}.',
+'category-article-count' => '{{PLURAL:$2|Esta categoria possui apenas a seguinte página.|Esta categoria possui {{PLURAL:$1|a seguinte página|as $1 páginas a seguir}}, de um total de $2.}}',
+'category-article-count-limited' => 'Esta categoria possui {{PLURAL:$1|a seguinte página|as $1 páginas a seguir}}.',
+'category-file-count' => '{{PLURAL:$2|Esta categoria possui apenas o seguinte arquivo.|Esta categoria possui {{PLURAL:$1|o seguinte arquivo|os $1 arquivos a seguir}}, de um total de $2.}}',
+'category-file-count-limited' => 'Esta categoria possui {{PLURAL:$1|um arquivo|$1 arquivos}}.',
 'listingcontinuesabbrev' => 'cont.',
 'index-category' => 'Páginas indexadas',
 'noindex-category' => 'Páginas não indexadas',
@@ -738,6 +739,9 @@ Note que algumas páginas podem continuar sendo exibidas como se você ainda est
 Não se esqueça de personalizar as suas [[Special:Preferences|preferências no wiki {{SITENAME}}]].',
 'yourname' => 'Nome de usuário:',
 'userlogin-yourname' => 'Nome de usuário',
+'userlogin-yourname-ph' => 'Escreva seu nome de usuário',
+'createacct-helpusername-url' => '{{ns:Project}}:Política_de_nomes_de_usuário',
+'createacct-helpusername-link' => '[[{{MediaWiki:createacct-helpusername-url}}|(ajude-me a escolher)]]',
 'yourpassword' => 'Senha:',
 'userlogin-yourpassword' => 'Senha',
 'userlogin-yourpassword-ph' => 'Digite sua senha',
@@ -746,7 +750,8 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências no
 'createacct-yourpasswordagain' => 'Confirmar senha',
 'createacct-yourpasswordagain-ph' => 'Digite a senha novamente',
 'remembermypassword' => 'Lembrar meu login neste navegador (por no máximo $1 {{PLURAL:$1|dia|dias}})',
-'userlogin-remembermypassword' => 'Lembrar-me',
+'userlogin-remembermypassword' => 'Mantenha-me conectado',
+'userlogin-signwithsecure' => 'Entrar com um servidor seguro',
 'securelogin-stick-https' => 'Permanecer conectado ao HTTPS após a autenticação',
 'yourdomainname' => 'Seu domínio:',
 'password-change-forbidden' => 'Você não pode alterar senhas nessa wiki.',
@@ -759,14 +764,31 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências no
 'logout' => 'Sair',
 'userlogout' => 'Sair',
 'notloggedin' => 'Não autenticado',
+'userlogin-noaccount' => 'Não possui uma conta?',
+'userlogin-joinproject' => 'Sobre {{SITENAME}}',
 'nologin' => 'Não possui uma conta? $1.',
 'nologinlink' => 'Criar uma conta',
 'createaccount' => 'Criar conta',
 'gotaccount' => "Já possui uma conta? '''$1'''.",
 'gotaccountlink' => 'Autenticar-se',
 'userlogin-resetlink' => 'Esqueceu-se do seu nome de usuário ou da senha?',
+'helplogin-url' => 'Help:Iniciar sessão',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Ajuda para iniciar sessão]]',
+'createacct-join' => 'Insira suas informações abaixo.',
+'createacct-emailrequired' => 'Endereço de e-mail',
+'createacct-emailoptional' => 'Endereço de e-mail (opcional)',
+'createacct-email-ph' => 'Confirme seu endereço de e-mail',
 'createaccountmail' => 'Usar uma senha aleatória e temporária que será enviada ao endereço de e-mail especificado a seguir',
+'createacct-realname' => 'Nome real (opcional)',
 'createaccountreason' => 'Razão:',
+'createacct-reason' => 'Motivo',
+'createacct-reason-ph' => 'Por que você está criando outra conta',
+'createacct-captcha' => 'Verificação de segurança',
+'createacct-captcha-help-url' => '{{ns:Project}}:Solicitar uma conta',
+'createacct-imgcaptcha-help' => 'Não consegue ver a imagem? [[{{MediaWiki:createacct-captcha-help-url}}|Solicitar uma conta]]',
+'createacct-imgcaptcha-ph' => 'Digite o texto acima',
+'createacct-submit' => 'Crie sua conta',
+'createacct-benefit-heading' => '{{SITENAME}} é feita por pessoas como você.',
 'createacct-benefit-body1' => 'edições',
 'createacct-benefit-body2' => 'páginas',
 'createacct-benefit-body3' => 'contribuidores recentes',
@@ -774,6 +796,7 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências no
 'userexists' => 'O nome de usuário fornecido já está em uso.
 Escolha um nome diferente.',
 'loginerror' => 'Erro de autenticação',
+'createacct-error' => 'Erro ao criar a conta',
 'createaccounterror' => 'Não foi possível criar a conta: $1',
 'nocookiesnew' => "A conta do usuário foi criada, mas você não foi autenticado.
 {{SITENAME}} utiliza ''cookies'' para autenticar os usuários.
@@ -858,12 +881,14 @@ Por favor aguarde antes de tentar novamente.',
 'resetpass-wrong-oldpass' => 'Senha temporária ou atual inválida.
 Você pode já ter alterado com sucesso a sua senha, ou solicitado uma nova senha temporária.',
 'resetpass-temp-password' => 'Senha temporária:',
+'resetpass-abort-generic' => 'Uma extensão cancelou a alteração da senha.',
 
 # Special:PasswordReset
 'passwordreset' => 'Redefinir senha',
 'passwordreset-text' => 'Preencha este formulário para recuperar os dados da sua conta pelo e-mail.',
 'passwordreset-legend' => 'Reiniciar a senha',
 'passwordreset-disabled' => 'Redefinições de senha foram desabilitadas nesta wiki.',
+'passwordreset-emaildisabled' => 'Os recursos de e-mail foram desativados nesta wiki.',
 'passwordreset-pretext' => '{{PLURAL:$1||Introduza um dos dados abaixo}}',
 'passwordreset-username' => 'Nome de usuário:',
 'passwordreset-domain' => 'Domínio:',
@@ -891,7 +916,7 @@ $2
 Senha temporária: $2',
 'passwordreset-emailsent' => 'Foi enviado um e-mail de lembrete.',
 'passwordreset-emailsent-capture' => 'Foi enviado um e-mail de lembrete, que é mostrado abaixo.',
-'passwordreset-emailerror-capture' => 'Foi gerado o lembrete de e-mail mostrado abaixo, contudo falhou o envio para o usuário: $1',
+'passwordreset-emailerror-capture' => 'Foi gerado um e-mail de recuperação da senha, conforme mostrado abaixo, mas o envio {{GENDER:$2|ao usuário|à usuária}} falhou. $1',
 
 # Special:ChangeEmail
 'changeemail' => 'Alterar o endereço de e-mail',
@@ -1396,6 +1421,7 @@ Tente utilizar o prefixo ''all:'' em sua busca, para pesquisar por todos os cont
 'searchdisabled' => 'A busca em {{SITENAME}} se encontra desativada.
 Você poderá pesquisar através do Google enquanto isso.
 Note que os índices do sistema de busca externo poderão conter referências desatualizadas a {{SITENAME}}.',
+'search-error' => 'Ocorreu um erro ao buscar por: $1',
 
 # Preferences page
 'preferences' => 'Preferências',
@@ -1539,6 +1565,7 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'userrights-notallowed' => 'A sua conta não tem permissão para adicionar ou remover privilégios a usuários.',
 'userrights-changeable-col' => 'Grupos que pode alterar',
 'userrights-unchangeable-col' => 'Grupos que não pode alterar',
+'userrights-conflict' => 'Há um comflito de permissões de usuário! Por favor, aplique as alterações novamente.',
 
 # Groups
 'group' => 'Grupo:',
@@ -2287,6 +2314,15 @@ Necessário no mínimo um domínio de nível superior, por exemplo "*.org".<br /
 'listusers-noresult' => 'Não foram encontrados usuários para a forma pesquisada.',
 'listusers-blocked' => '({{GENDER:$1|bloqueado|bloqueada}})',
 
+# Special:ActiveUsers
+'activeusers' => 'Lista de usuários ativos',
+'activeusers-intro' => 'Esta é uma lista de usuários com algum tipo de atividade nos últimos $1 {{PLURAL:$1|dia|dias}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|ação|ações}} {{PLURAL:$3|no último dia|nos últimos $3 dias}}',
+'activeusers-from' => 'Mostrar usuários começando em:',
+'activeusers-hidebots' => 'Esconder robôs',
+'activeusers-hidesysops' => 'Esconder administradores',
+'activeusers-noresult' => 'Nenhum usuário encontrado.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Privilégios de grupo de usuários',
 'listgrouprights-summary' => 'O que segue é uma lista dos grupos de usuários definidos neste wiki, com os seus privilégios de acessos associados.
@@ -2774,6 +2810,7 @@ Consulte a [[Special:BlockList|lista de bloqueios]] para obter a lista de bloque
 'proxyblocksuccess' => 'Concluído.',
 'sorbsreason' => 'O seu endereço IP encontra-se listado como proxy aberto pela DNSBL utilizada por {{SITENAME}}.',
 'sorbs_create_account_reason' => 'O seu endereço de IP encontra-se listado como proxy aberto na DNSBL utilizada por {{SITENAME}}. Você não pode criar uma conta',
+'xffblockreason' => 'Um endereço IP presente no cabeçalho X-Forwarded-For, seu ou do servidor proxy que está usando, foi bloqueado. O motivo original do bloqueio foi: $1',
 'cant-block-while-blocked' => 'Você não pode bloquear outros usuários enquanto estiver bloqueado.',
 'cant-see-hidden-user' => 'O usuário que você está tentando bloquear já está bloqueado ou oculto. Como você não possui privilégio de ocultar usuários, você não pode ver ou editar o bloqueio desse usuário.',
 'ipbblocked' => 'Não é possível que você bloqueie ou desbloqueie outros usuários, já que você se encontra bloqueado',
@@ -3255,6 +3292,14 @@ Executá-lo poderá comprometer a segurança do seu sistema.",
 'hours-ago' => '$1 {{PLURAL:$1|hora|horas}} atrás',
 'minutes-ago' => '$1 {{PLURAL:$1|minuto|minutos}} atrás',
 'seconds-ago' => '$1 {{PLURAL:$1|segundo|segundos}} atrás',
+'monday-at' => 'Segunda-feira às $1',
+'tuesday-at' => 'Terça-feira às $1',
+'wednesday-at' => 'Quarta-feira às $1',
+'thursday-at' => 'Quinta-feira às $1',
+'friday-at' => 'Sexta-feira às $1',
+'saturday-at' => 'Sábado às $1',
+'sunday-at' => 'Domingo às $1',
+'yesterday-at' => 'Ontem às $1',
 
 # Bad image list
 'bad_image_list' => 'O formato é o seguinte:
@@ -3881,7 +3926,16 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 'version-entrypoints-header-entrypoint' => 'Ponto de entrada',
 'version-entrypoints-header-url' => 'URL',
 
+'redirect' => 'Redirecionar por arquivo, usuário ou ID de revisão',
+'redirect-legend' => 'Redirecionar para um arquivo ou página',
+'redirect-summary' => 'Esta página especial redireciona a um arquivo (dado o nome do arquivo), a uma página (dado um ID de revisão) ou a uma página de usuário (dado o ID do usuário).',
+'redirect-submit' => 'Ir',
+'redirect-lookup' => 'Buscar',
+'redirect-value' => 'Valor:',
+'redirect-user' => 'ID do usuário',
+'redirect-revision' => 'Revisão da página',
 'redirect-file' => 'Nome do arquivo',
+'redirect-not-exists' => 'Valor não encontrado',
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Procurar por arquivos duplicados',
@@ -4012,7 +4066,7 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 'logentry-newusers-autocreate' => 'A conta de usuário $1 foi criada automaticamente',
 'logentry-rights-rights' => '$1 alterou os grupos de usuário de $3 de $4 para $5',
 'logentry-rights-rights-legacy' => '$1 alterou os grupos de $3',
-'logentry-rights-autopromote' => '$1 foi promovido automaticamente de $4 a $5',
+'logentry-rights-autopromote' => '$1 foi promovido automaticamente de $4 para $5',
 'rightsnone' => '(nenhum)',
 
 # Feedback
@@ -4088,4 +4142,7 @@ Caso contrário, você poderá usar o formulário simplificado a seguir. Seu com
 'duration-centuries' => '$1 {{PLURAL:$1|século|séculos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milênio|milênios}}',
 
+# Image rotation
+'rotate-comment' => 'Imagem girada por $1 {{PLURAL:$1|grau|graus}} no sentido horário',
+
 );
index d127de7..ba508e6 100644 (file)
@@ -357,7 +357,7 @@ The pagination links in category viewer. Parameters:
 
 'linkprefix' => '{{optional}}',
 
-'about' => 'អំពី',
+'about' => '{{Identical|About}}',
 'article' => "A 'content page' is a page that forms part of the purpose of the wiki. It includes the main page and pages in the main namespace and any other namespaces that are included when the wiki is customised. For example on Wikimedia Commons 'content pages' include pages in the file and category namespaces. On Wikinews 'content pages' include pages in the Portal namespace. For technical definition of 'content namespaces' see [[mw:Manual:Using_custom_namespaces#Content_namespaces|MediaWiki]].
 
 Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
@@ -1051,10 +1051,7 @@ See examples: [{{canonicalurl:Special:UserLogin|useNew=1}} Special:UserLogin?use
 
 See example: [{{canonicalurl:Special:UserLogin|useNew=1}} Special:UserLogin?useNew=1] and [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]',
 'createacct-helpusername-url' => 'The URL of a page providing username guidance for the wiki.
-
-Used as a link in {{msg-mw|Createacct-helpusername-link}}.
-
-See example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]',
+Used as a link in the {{msg-mw|Createacct-helpusername}} on WMF wikis.',
 'createacct-helpusername-link' => 'Message in new create account form providing guidance for username.
 
 See example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]',
@@ -4300,6 +4297,36 @@ You can apparently use 'URL' instead of 'hostname'.",
 'listusers-blocked' => 'Used on [[Special:ActiveUsers]] when a user has been blocked.
 * $1 is a user name for use with GENDER (optional)',
 
+# Special:ActiveUsers
+'activeusers' => 'Title of [[Special:ActiveUsers]]',
+'activeusers-intro' => 'Used as introduction in [[Special:ActiveUsers]]. Parameters:
+* $1 - number of days (<code>$wgActiveUserDays</code>)',
+'activeusers-count' => "Used in [[Special:ActiveUsers]] to show the active user's recent action count in brackets ([]).
+* $1 is the number of recent actions
+* $2 is the user's name for use with GENDER (optional)
+* $3 is the maximum number of days of the RecentChangesList",
+'activeusers-from' => 'Used as label for checkbox in the form on [[Special:ActiveUsers]].
+
+identical with {{msg-mw|listusersfrom}}
+
+See also:
+* {{msg-mw|activeusers|legend for the form}}
+* {{msg-mw|activeusers-hidebots|label for checkbox}}
+* {{msg-mw|activeusers-hidesysops|label for checkbox}}',
+'activeusers-hidebots' => 'Used as label for checkbox in the form on [[Special:ActiveUsers]].
+
+See also:
+* {{msg-mw|activeusers|legend for the form}}
+* {{msg-mw|activeusers-from|label for input box}}
+* {{msg-mw|activeusers-hidesysops|label for checkbox}}',
+'activeusers-hidesysops' => 'Used as label for checkbox in the form on [[Special:ActiveUsers]].
+
+See also:
+* {{msg-mw|activeusers|legend for the form}}
+* {{msg-mw|activeusers-from|label for input box}}
+* {{msg-mw|activeusers-hidebots|label for checkbox}}',
+'activeusers-noresult' => 'identical with {{msg-mw|listusers-noresult}}',
+
 # Special:ListGroupRights
 'listgrouprights' => 'The name of the special page [[Special:ListGroupRights]].',
 'listgrouprights-summary' => 'The description used on [[Special:ListGroupRights]].',
@@ -7119,17 +7146,17 @@ See also {{msg-mw|Days-abbrev}}
 
 Part of variable $1 in {{msg-mw|Ago}}
 {{Identical|Day}}',
-'weeks' => 'Full word for "weeks". $1 is the number of weeks.
+'weeks' => 'Full word for "weeks".
 
-See also {{msg-mw|Weeks-abbrev}}
-
-Part of variable $1 in {{msg-mw|Ago}}',
+Used as <code>$1</code> in {{msg-mw|Ago}}. Parameters:
+* $1 - the number of weeks',
 'months' => 'Full word for "months". $1 is the number of months.
 
 Part of variable $1 in {{msg-mw|Ago}}',
-'years' => 'Full word for "years". $1 is the number of years.
+'years' => 'Full word for "years".
 
-Part of variable $1 in {{msg-mw|Ago}}',
+Used as <code>$1</code> in {{msg-mw|Ago}}. Parameters:
+* $1 - the number of years',
 'ago' => 'Phrase for indicating how long ago something happened. $1 is something like "3 days 10 hours", taken from these messages:
 *{{msg-mw|Seconds}}
 *{{msg-mw|Minutes}}
index 045e1de..ac3368a 100644 (file)
@@ -1983,6 +1983,15 @@ Dovra almain ina top-level domain, per exempel "*.org".<br />
 'listusers-noresult' => 'Betg chattà in utilisader.',
 'listusers-blocked' => '(bloccà)',
 
+# Special:ActiveUsers
+'activeusers' => 'Glista dals utilisaders activs',
+'activeusers-intro' => "Quai è ina glista dals utilisaders che han gì activitads {{PLURAL:$1|l'ultim di|en ils ultims $1 dis}}.",
+'activeusers-count' => "$1 {{PLURAL:$1|modificaziun|modificaziuns}} {{PLURAL:$3|l'ultim di|ils ultims $3 dis}}",
+'activeusers-from' => 'Mussar utilisaders davent da:',
+'activeusers-hidebots' => 'Zuppentar bots',
+'activeusers-hidesysops' => 'Zuppentar administraturs',
+'activeusers-noresult' => 'Chattà nagins utilisaders.',
+
 # Special:ListGroupRights
 'listgrouprights' => "Dretgs da las gruppas d'utilisaders",
 'listgrouprights-summary' => "Sutvart vegn mussada ina glista da las gruppas d'utilisaders sin questa wiki cun ils dretgs d'access associads.
@@ -2311,7 +2320,7 @@ $1',
 'blanknamespace' => '(principal)',
 
 # Contributions
-'contributions' => "Contribuziuns {{GENDER:$1|dautilisader|da l'utilisadra}}",
+'contributions' => "Contribuziuns {{GENDER:$1|da l'utilisader|da l'utilisadra}}",
 'contributions-title' => "Contribuziuns d'utilisader da $1",
 'mycontris' => 'Contribuziuns',
 'contribsub2' => 'Per $1 ($2)',
@@ -3571,15 +3580,6 @@ Ti duessas avair retschavì [{{SERVER}}{{SCRIPTPATH}}/COPYING ina copia da la GN
 'version-entrypoints-header-entrypoint' => "Punct d'entrada",
 'version-entrypoints-header-url' => 'URL',
 
-# Special:FilePath
-'filepath' => 'Percurs da la datoteca',
-'filepath-page' => 'Datoteca:',
-'filepath-submit' => 'Dai',
-'filepath-summary' => 'Questa pagina speciala inditgescha l\'adressa cumpletta per ina datoteca. 
-Maletgs vegnan mussads en resoluziun cumpletta, auters tips da datoteca vegnan averts directamain cun lur program assozià. 
-
-Endatescha il num da datoteca senza il prefix "{{ns:file}}:".',
-
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Tschertgar datotecas dublas',
 'fileduplicatesearch-summary' => 'Tschertgar datotecas dublas a basa da valurs da hash.',
index a696f1d..e5a7571 100644 (file)
@@ -2280,6 +2280,15 @@ Necesită cel puțin un domeniu de nivel superior, cum ar fi „*.org”.<br />
 'listusers-noresult' => 'Nici un utilizator găsit.',
 'listusers-blocked' => '(blocat{{GENDER:$1||ă|}})',
 
+# Special:ActiveUsers
+'activeusers' => 'Listă utilizatori activi',
+'activeusers-intro' => 'Aceasta este o listă cu utilizatorii care au avut orice fel de activitate în {{PLURAL:$1|ultima zi|ultimele $1 zile}}.',
+'activeusers-count' => '{{PLURAL:$1|o acțiune|$1 acțiuni|$1 de acțiuni}} în {{PLURAL:$3|ultima zi|ultimele $3 zile|ultimele $3 de zile}}',
+'activeusers-from' => 'Afișează utilizatori începând cu:',
+'activeusers-hidebots' => 'Ascunde roboții',
+'activeusers-hidesysops' => 'Ascunde administratorii',
+'activeusers-noresult' => 'Niciun utilizator găsit.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Permisiuni grupuri de utilizatori',
 'listgrouprights-summary' => 'Mai jos se află o listă a grupurilor de utilizatori definite în acest wiki, împreună cu permisiunile de acces asociate.
index 0b1b3f2..10c401a 100644 (file)
@@ -2059,6 +2059,15 @@ Onne abbesogne almene de \'nu dominie de levèlle ierte, pe esembie "*.org". <br
 'listusers-noresult' => 'Nisciune utende acchiete.',
 'listusers-blocked' => '(bloccate)',
 
+# Special:ActiveUsers
+'activeusers' => "Liste de l'utinde attive",
+'activeusers-intro' => "Queste jè 'n'elenghe de utinde ca avene fatte certe tipe de attività fine a l'urteme $1 {{PLURAL:$1|sciurne|sciurne}}.",
+'activeusers-count' => "$1 {{PLURAL:$1|cangiamende|cangiaminde}} jndr'à l'urteme {{PLURAL:$3|sciurne}}",
+'activeusers-from' => "Fà vedè l'utinde partenne da:",
+'activeusers-hidebots' => 'Scunne le bot',
+'activeusers-hidesysops' => 'Scunne le amministrature',
+'activeusers-noresult' => 'Nisciune utende acchiate.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Deritte de le gruppe utinde',
 'listgrouprights-summary' => "'A liste ca ste vide ète 'na liste de le gruppe utinde ccreiate sus a sta Uicchi, cu le lore deritte d'accesse associate.
index 114dd60..f4954d4 100644 (file)
@@ -2381,6 +2381,15 @@ $1',
 'listusers-noresult' => 'Не найдено участников.',
 'listusers-blocked' => '(заблокирован{{GENDER:$1||а}})',
 
+# Special:ActiveUsers
+'activeusers' => 'Список активных участников',
+'activeusers-intro' => 'Это список участников, совершавших какие-либо действия за {{PLURAL:$1|последний $1 день|последние $1 дня|последние $1 дней}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|правка|правки|правок}} за {{PLURAL:$3|$3 последний день|последние $3 дня|последние $3 дней}}',
+'activeusers-from' => 'Показать участников, начиная с:',
+'activeusers-hidebots' => 'Скрыть ботов',
+'activeusers-hidesysops' => 'Скрыть администраторов',
+'activeusers-noresult' => 'Не найдено участников.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Права групп участников',
 'listgrouprights-summary' => 'Ниже представлен список определённых в этой вики групп участников, указаны соответствующие им права доступа.
index 9150354..9b2ed7e 100644 (file)
@@ -1987,6 +1987,15 @@ $1',
 'listusers-noresult' => 'Кыттааччылар булуллубатылар.',
 'listusers-blocked' => '(хааччахтаммыт)',
 
+# Special:ActiveUsers
+'activeusers' => 'Көхтөөх кыттааччылар тиһиктэрэ',
+'activeusers-intro' => 'Бу кэлиҥҥи $1 {{PLURAL:$1|күҥҥэ|күннэргэ}} тугу эмэ гыммыт кыттааччылар тиһиктэрэ.',
+'activeusers-count' => 'Кэнники $3 күҥҥэ саҥа $1 көннөрүү киирбит',
+'activeusers-from' => 'Мантан саҕалаан кыттааччылары көрүү:',
+'activeusers-hidebots' => 'Руобаттары көрдөрүмэ',
+'activeusers-hidesysops' => 'Дьаһабыллары көрдөрүмэ',
+'activeusers-noresult' => 'Кыттааччылар көстүбэтилэр.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Кыттааччылар бөлөхтөрүн бырааптара',
 'listgrouprights-summary' => 'Манна бу биикигэ баар бөлөхтөр уонна кинилэр киирэр бырааптара көстөллөр.
index 817bb8a..8e492f1 100644 (file)
@@ -607,9 +607,20 @@ $2',
 'welcomecreation-msg' => 'ඔබගේ ගිණුම තනා ඇත.
 ඔබගේ [[Special:Preferences|{{SITENAME}} අභිරුචීන්]] නෙස් කිරීමට අමතක නොකරන්න.',
 'yourname' => 'පරිශීලක නාමය:',
+'userlogin-yourname' => 'පරිශීලක නම',
+'userlogin-yourname-ph' => 'ඔබගේ පරිශීලක නම ඇතුළු කරන්න',
+'createacct-helpusername-url' => '{{ns:Project}}:පරිශීලක නම_ප්‍රතිපත්තිය',
+'createacct-helpusername-link' => '[[{{MediaWiki:createacct-helpusername-url}}|(තෝරාගනුමට මට සහය වන්න)]]',
 'yourpassword' => 'මුරපදය:',
+'userlogin-yourpassword' => 'මුර පදය',
+'userlogin-yourpassword-ph' => 'ඔබගේ මුර පදය ඇතුළු කරන්න',
+'createacct-yourpassword-ph' => 'මුර පදයක් ඇතුළු කරන්න',
 'yourpasswordagain' => 'මුරපදය යළි ඇතුළු කරන්න:',
+'createacct-yourpasswordagain' => 'මුර පදය සනාථ කරන්න',
+'createacct-yourpasswordagain-ph' => 'මුර පදය යළි ඇතුළු කරන්න',
 'remembermypassword' => 'මාගේ පිවිසීම මෙම ගවේෂක මතකයෙහි (උපරිම ලෙස {{PLURAL:$1|දින|දින}}) $1 ක් මතක තබාගන්න',
+'userlogin-remembermypassword' => 'මා ප්‍රවිෂ්ටයෙහි තබන්න',
+'userlogin-signwithsecure' => 'සුරක්ෂිත සේවාදායකය තුලින් ප්‍රවිෂ්ට කරන්න',
 'securelogin-stick-https' => 'ඇතුල්වීමෙන් පසුවද HTTPS හරහා සම්බන්ධ වන්න',
 'yourdomainname' => 'ඔබගේ වසම:',
 'password-change-forbidden' => 'ඔබට මෙම විකියෙහි මුරපද වෙනස් කල නොහැක.',
@@ -622,14 +633,27 @@ $2',
 'logout' => 'නික්මීම',
 'userlogout' => 'නික්මීම',
 'notloggedin' => 'ප්‍රවිසී නැත',
+'userlogin-noaccount' => 'ගිණුමක් නොමැතිද?',
+'userlogin-joinproject' => '{{SITENAME}}හා එක්වන්න',
 'nologin' => "ඔබ හට ගිණුමක් නොමැතිද? '''$1'''.",
 'nologinlink' => 'ගිණුමක් තනන්න',
 'createaccount' => 'අලුත් ගිණුමක් තනන්න',
 'gotaccount' => 'දැනටමත් ගිණුමක් තිබේද? $1.',
 'gotaccountlink' => 'පිවිසෙන්න',
 'userlogin-resetlink' => 'ඔබේ පිවිසුම් තොරතුරු අමතකද?',
-'createaccountmail' => 'විද්‍යුත් තැපෑල මගින්',
+'helplogin-url' => 'Help:ප්‍රවිෂ්ට වීම',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ප්‍රවිෂ්ට වීමට උදවු වන්න]]',
+'createacct-join' => 'ඔබගේ තොරතුරු පහත ඇතුළු කරන්න.',
+'createacct-emailrequired' => 'වි-තැපෑල ලිපිනය',
+'createacct-emailoptional' => 'වි-තැපෑල ලිපිනය (විකල්ප)',
+'createacct-email-ph' => 'ඔබගේ වි-තැපෑල ලිපිනය ඇතුළු කරන්න',
+'createaccountmail' => 'තාවකාලික අහුඹු මුර පදයක් භාවිතා කර එය පහත දක්වා ඇති වි-තැපැල් ලිපිනයට යවන්න',
+'createacct-realname' => 'නියම නම (වෛකල්පීය)',
 'createaccountreason' => 'හේතුව:',
+'createacct-reason' => 'හේතුව',
+'createacct-reason-ph' => 'ඔබ තවත් ගිණුමක් තනන්නේ කුමක් නිසාද',
+'createacct-captcha' => 'ආරක්ෂක පරික්ෂාව',
+'createacct-captcha-help-url' => '{{ns:Project}}:ගිණුමක් ඉල්ලා සිටින්න',
 'badretype' => 'ඔබ ඇතුළු කල මුරපදය නොගැලපේ.',
 'userexists' => 'ඔබ ඇතුළු කල පරිශීලක නාමය දැනටමත් භාවිතයෙහි ඇත.
 කරුණාකර වෙනත් නමක් තෝරා ගන්න.',
@@ -2102,6 +2126,15 @@ When filtered by user, only files where that user uploaded the most recent versi
 'listusers-noresult' => 'පරිශීලකයෙකු සොයාගත නොහැකි විය.',
 'listusers-blocked' => '(වාරණය කොට)',
 
+# Special:ActiveUsers
+'activeusers' => 'සක්‍රීය පරිශීලකයන් ලැයිස්තුව',
+'activeusers-intro' => 'මෙය පසුගිය $1 {{PLURAL:$1|දිනය|දින}}තුළ යම් ක්‍රියාකාරකමක් කළ පරිශීලකයන්ගේ ලැයිස්තුවකි.',
+'activeusers-count' => '{{PLURAL:$1|එක් සංස්කරණයක්|සංස්කරණ $1 ක්}} අවසන් {{PLURAL:$3|දිනය|දින $3}} තුළ',
+'activeusers-from' => 'මෙයින් ඇරඹෙන පරිශීලකයන් පෙන්වන්න:',
+'activeusers-hidebots' => ' bots සඟවන්න',
+'activeusers-hidesysops' => 'පරිපාලකයින් සඟවන්න',
+'activeusers-noresult' => 'කිසිදු පරිශීලකයෙකු හමුනොවිණි.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'පරිශීලක කාණ්ඩ හිමිකම්',
 'listgrouprights-summary' => 'මෙම විකියේ අර්ථදක්වා ඇති පරිශීලක කාණ්ඩ ලැයිස්තුවක් ඔවුනට අදාළ ප්‍රවේශ හිමිකම්ද සමගින් මෙහි පහත ලැයිස්තුගත කොට ඇත.
@@ -3790,13 +3823,6 @@ MediaWiki බෙදාහැර ඇත්තේ එය ප්‍රයෝජන
 'version-entrypoints-header-entrypoint' => 'නිවේශන ලක්ෂ්‍යය',
 'version-entrypoints-header-url' => 'URL',
 
-# Special:FilePath
-'filepath' => 'ගොනු පෙත',
-'filepath-page' => 'ගොනුව:',
-'filepath-submit' => 'යන්න',
-'filepath-summary' => 'මෙම විශේෂ පිටුව ගොනුවකට අදාල සම්පූර්ණ පෙත හුවා දක්වයි.
-රූප පූර්ණ විසර්ජනයෙන් දැක්වෙන අතර, අනෙකුත් ගොනු වර්ග ඒවායේ ආශ්‍රිත ක්‍රමලේඛයන් අනුසාරයෙන් සෘජුව ආරම්භ කෙරේ.',
-
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'අනුපිටපත් ගොනු සඳහා ගවේෂණය කරන්න',
 'fileduplicatesearch-summary' => 'එහි පූරක අගය පාදක කර ගෙන අනුපිටපත් ගොනු සඳහා ගවේෂණය කරන්න.',
index 26ca4da..a688622 100644 (file)
@@ -2229,6 +2229,15 @@ Povinná je minimálne doména najvyššej úrovne, napr. „*.org“.<br />
 'listusers-noresult' => 'Neboli nájdení používatelia. Prosím, skontrolujte aj varianty s veľkými/malými písmenami.',
 'listusers-blocked' => '(zablokovaný)',
 
+# Special:ActiveUsers
+'activeusers' => 'Zoznam aktívnych používateľov',
+'activeusers-intro' => 'Toto je zoznam používateľov, ktorí $1 {{PLURAL:$1|za posledný 1 deň|za posledné $1 dni|za posledných $1 dní}} vykonali nejakú aktivitu.',
+'activeusers-count' => '$1 {{PLURAL:$1|úprava|úpravy|úprav}} za {{PLURAL:$3|posledný deň|posledné $3 dni|posledných $3 dní}}',
+'activeusers-from' => 'Zobraziť používateľov počínajúc:',
+'activeusers-hidebots' => 'Skryť robotov',
+'activeusers-hidesysops' => 'Skryť správcov',
+'activeusers-noresult' => 'Neboli nájdení žiadni používatelia.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Práva skupiny používateľov',
 'listgrouprights-summary' => 'Toto je zoznam skupín používateľov definovaných na tejto wiki a ich prístupových práv.
index 3fbbcdf..301a75e 100644 (file)
@@ -2191,6 +2191,15 @@ Zahtevana je vsaj najvišja domena, na primer »*.org«.<br />
 'listusers-noresult' => 'Ni najdenih uporabnikov.',
 'listusers-blocked' => '(blokiran)',
 
+# Special:ActiveUsers
+'activeusers' => 'Seznam aktivnih uporabnikov',
+'activeusers-intro' => 'Seznam uporabnikov, ki so bili kakor koli aktivni v {{PLURAL:$1|zadnjem $1 dnevu|zadnjih $1 dneh}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|dejanje|dejanji|dejanja|dejanj}} v {{PLURAL:$3|preteklem dnevu|preteklih $3 dneh}}',
+'activeusers-from' => 'Prikaži uporabnike začenši z:',
+'activeusers-hidebots' => 'Skrij bote',
+'activeusers-hidesysops' => 'Skrij administratorje',
+'activeusers-noresult' => 'Noben uporabnik ni bil najden.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Pravice uporabniških skupin',
 'listgrouprights-summary' => 'Tu je na razpolago seznam uporabniških skupin na tem wikiju z navedbo dodeljenih pravic dostopa.
index bbee726..6b6781f 100644 (file)
@@ -23,6 +23,7 @@
  * @author Reedy
  * @author Sasa Stefanovic
  * @author Slaven Kosanovic
+ * @author TheStefan12345
  * @author Јованвб
  * @author Жељко Тодоровић
  * @author Милан Јелисавчић
@@ -529,6 +530,7 @@ $messages = array(
 'newwindow' => '(отвара се у новом прозору)',
 'cancel' => 'Откажи',
 'moredotdotdot' => 'Више…',
+'morenotlisted' => 'Више није приказано…',
 'mypage' => 'Страница',
 'mytalk' => 'Разговор',
 'anontalk' => 'Разговор за ову ИП адресу',
@@ -843,7 +845,7 @@ $2',
 'gotaccount' => 'Већ имате налог? Идите на страницу „$1“.',
 'gotaccountlink' => 'Пријава',
 'userlogin-resetlink' => 'Заборавили сте податке за пријаву?',
-'createaccountmail' => 'Ð\95-поÑ\88Ñ\82ом',
+'createaccountmail' => 'Ð\9aоÑ\80иÑ\81Ñ\82иÑ\82е Ð¿Ñ\80ивÑ\80еменÑ\83, Ñ\81лÑ\83Ñ\87аÑ\98но Ñ\81Ñ\82воÑ\80енÑ\83 Ð»Ð¾Ð·Ð¸Ð½ÐºÑ\83 Ð¸ Ð¿Ð¾Ñ\88аÑ\99иÑ\82е Ð½Ð° Ð´Ð¾Ð»Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ñ\83 Ð°Ð´Ñ\80еÑ\81Ñ\83 ÐµÐ»ÐµÐºÑ\82Ñ\80онÑ\81ке Ð¿Ð¾Ñ\88Ñ\82е',
 'createaccountreason' => 'Разлог:',
 'badretype' => 'Унете лозинке се не поклапају.',
 'userexists' => 'Корисничко име је заузето. Изаберите друго.',
@@ -888,7 +890,7 @@ $2',
 'eauthentsent' => 'На наведену е-адресу је послат потврдни код.
 Пре него што пошаљемо даљње поруке, пратите упутства с е-поште да бисте потврдили да сте ви отворили налог.',
 'throttled-mailpassword' => 'Подсетник за лозинку је послат {{PLURAL:$1|пре сат времена|у последња $1 сата|у последњих $1 сати}}.
-Да бисмо спречили злоупотребу, поседник шаљемо само једном у року од {{PLURAL:$1|једног сата|$1 сата|$1 сати}}.',
+Да бисмо спречили злоупотребу, подсетник шаљемо само једном у року од {{PLURAL:$1|једног сата|$1 сата|$1 сати}}.',
 'mailerror' => 'Грешка при слању поруке: $1',
 'acct_creation_throttle_hit' => 'Посетиоци овог викија који користе вашу ИП адресу су већ отворили {{PLURAL:$1|један налог|$1 налога|$1 налога}} претходни дан, што је највећи дозвољени број у том временском периоду.
 Због тога посетиоци с ове ИП адресе тренутно не могу отворити више налога.',
@@ -918,6 +920,7 @@ $2',
 # Email sending
 'php-mail-error-unknown' => 'Непозната грешка у функцији PHP mail().',
 'user-mail-no-addy' => 'Покушали сте да пошаљете поруку без е-адресе.',
+'user-mail-no-body' => 'Покушано слање електронске поруке с празним или неразумно кратким садржајем.',
 
 # Change password dialog
 'resetpass' => 'Промена лозинке',
@@ -938,10 +941,11 @@ $2',
 'resetpass-wrong-oldpass' => 'Неисправна привремена или текућа лозинка.
 Можда сте већ променили лозинку или сте затражили нову привремену лозинку.',
 'resetpass-temp-password' => 'Привремена лозинка:',
+'resetpass-abort-generic' => 'Промену лозинке је спречио додатак.',
 
 # Special:PasswordReset
 'passwordreset' => 'Обнављање лозинке',
-'passwordreset-text' => 'Попуните овај образац да бисте примили е-поруку са својим подацима за пријаву.',
+'passwordreset-text' => 'Попуните овај образац да бисте ресетовали лозинку.',
 'passwordreset-legend' => 'Поништи лозинку',
 'passwordreset-disabled' => 'Обнављање лозинке је онемогућено на овом викију.',
 'passwordreset-pretext' => '{{PLURAL:$1||Унесите један од делова података испод}}',
@@ -951,14 +955,14 @@ $2',
 'passwordreset-capture-help' => 'Ако означите ову кућицу, е-порука с привременом лозинком ће бити приказана и послата кориснику.',
 'passwordreset-email' => 'Е-адреса:',
 'passwordreset-emailtitle' => 'Детаљи налога на викију {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Ð\9dеко, Ð²ÐµÑ\80оваÑ\82но Ð²и, са ИП адресе $1 је затражио нову лозинку на викију {{SITENAME}} ($4).
+'passwordreset-emailtext-ip' => 'Ð\9dеко, Ð²ÐµÑ\80оваÑ\82но Ð\92и, са ИП адресе $1 је затражио нову лозинку на викију {{SITENAME}} ($4).
 Следећи {{PLURAL:$3|кориснички налог је повезан|кориснички налози су повезани}} с овом е-адресом:
 
 $2
 
-{{PLURAL:$3|Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана|$5 дана}}.
-Пријавите се и изаберите нову лозинку. Ако је неко други захтевао ову радњу или сте се сетили лозинке и не желите да је мењате, занемарите ову поруку.',
-'passwordreset-emailtext-user' => '{{GENDER:$1|Корисник|Корисница|Корисник}} $1 је затражио подсетник о подацима за пријаву на викију {{SITENAME}} ($4).
+{{PLURAL:$3|Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана}}.
+Пријавите се и изаберите нову лозинку. Ако је неко други захтевао ову радњу или сте се сетили лозинке и не желите да је мењате, занемарите ову поруку и наставите користити стару лозинку.',
+'passwordreset-emailtext-user' => '{{GENDER:$1|Корисник|Корисница|Корисник}} је затражио подсетник о подацима за пријаву на викију {{SITENAME}} ($4).
 Следећи {{PLURAL:$3|кориснички налог је повезан|кориснички налози су повезани}} с овом е-адресом:
 
 $2
@@ -1150,8 +1154,8 @@ $2
 '''Не шаљите радове заштићене ауторским правима без дозволе!'''",
 'longpageerror' => "'''Грешка: текст који сте унели је величине {{PLURAL:$1|један килобајт|$1 килобајта|$1 килобајта}}, што је веће од {{PLURAL:$2|дозвољеног једног килобајта|дозвољена $2 килобајта|дозвољених $2 килобајта}}.'''
 Страница не може бити сачувана.",
-'readonlywarning' => "'''Упозорење: база података је закључана ради одржавања, тако да тренутно нећете моћи да сачувате измене.
\9dаÑ\98боÑ\99е Ð±Ð¸ Ð±Ð¸Ð»Ð¾ Ð´Ð° Ñ\81аÑ\87Ñ\83ваÑ\82е Ñ\82екÑ\81Ñ\82 Ð·Ð° ÐºÐ°Ñ\81ниÑ\98е Ñ\83 Ð½ÐµÐºÐ¾Ñ\98 Ñ\82екÑ\81Ñ\82Ñ\83алноÑ\98 Ð´Ð°Ñ\82оÑ\82еÑ\86и.'''
+'readonlywarning' => "'''Упозорење: база података је закључана ради одржавања, тако да тренутно нећете моћи да сачувате измене.'''
\9cожда Ð±Ð¸Ñ\81Ñ\82е Ð¶ÐµÐ»ÐµÐ»Ð¸ Ñ\81аÑ\87Ñ\83ваÑ\82и Ñ\82екÑ\81Ñ\82 Ð·Ð° ÐºÐ°Ñ\81ниÑ\98е Ñ\83 Ð½ÐµÐºÐ¾Ñ\98 Ñ\82екÑ\81Ñ\82Ñ\83алноÑ\98 Ð´Ð°Ñ\82оÑ\82еÑ\86и.
 
 Администратор који је закључао базу дао је следеће објашњење: $1",
 'protectedpagewarning' => "'''Упозорење: ова страница је заштићена, тако да само администратори могу да је мењају.'''
@@ -1462,7 +1466,7 @@ $1",
 'search-interwiki-default' => '$1 резултати:',
 'search-interwiki-more' => '(више)',
 'search-relatedarticle' => 'Повезано',
-'mwsuggest-disable' => 'Онемогући предлоге AJAX',
+'mwsuggest-disable' => 'Онемогући предлоге при претраживању',
 'searcheverything-enable' => 'сви именски простори',
 'searchrelated' => 'повезано',
 'searchall' => 'све',
@@ -1564,7 +1568,7 @@ $1",
 'prefs-textboxsize' => 'Величина оквира за уређивање',
 'youremail' => 'Е-адреса:',
 'username' => 'Корисничко име:',
-'uid' => 'Кориснички ИБ:',
+'uid' => 'Кориснички ID:',
 'prefs-memberingroups' => 'Члан {{PLURAL:$1|групе|групâ}}:',
 'prefs-memberingroups-type' => '$1',
 'prefs-registration' => 'Време уписа:',
@@ -2217,6 +2221,12 @@ $1',
 Уместо тога, ваљало би да воде до одговарајуће теме.
 Страница се сматра вишезначном одредницом ако користи шаблон који води од [[MediaWiki:Disambiguationspage]].",
 
+'pageswithprop' => 'Стране с особином стране',
+'pageswithprop-legend' => 'Стране с особином стране',
+'pageswithprop-text' => 'Ова страна излистава стране које имају одређену особину',
+'pageswithprop-prop' => 'Име особине:',
+'pageswithprop-submit' => 'Иди',
+
 'doubleredirects' => 'Двострука преусмерења',
 'doubleredirectstext' => 'Ова страница приказује странице које преусмеравају на друга преусмерења.
 Сваки ред садржи везе према првом и другом преусмерењу, као и одредишну страницу другог преусмерења која је обично „прави“ чланак на кога прво преусмерење треба да упућује.
@@ -2370,9 +2380,9 @@ $1',
 'linksearch-pat' => 'Образац претраге:',
 'linksearch-ns' => 'Именски простор:',
 'linksearch-ok' => 'Претражи',
-'linksearch-text' => 'Могу се користити џокери попут „*.wikipedia.org“.<br />
+'linksearch-text' => 'Могу се користити џокери попут „*.wikipedia.org“.
 Потребан је највиши домен, као „*.org“.<br />
-Подржани протоколи: <code>$1</code> (задаје http:// ако не наведете протокол).',
+{{PLURAL:$2|Подржан протокол|Подржани протоколи}}: <code>$1</code> (задаје http:// ако не наведете протокол).',
 'linksearch-line' => '$1 веза у $2',
 'linksearch-error' => 'Џокери се могу појавити само на почетку адресе.',
 
@@ -2382,6 +2392,15 @@ $1',
 'listusers-noresult' => 'Корисник није пронађен.',
 'listusers-blocked' => '({{GENDER:$1|блокиран|блокирана|блокиран}})',
 
+# Special:ActiveUsers
+'activeusers' => 'Списак активних корисника',
+'activeusers-intro' => 'Ово је списак корисника који су били активни {{PLURAL:$1|претходни дан|у последња $1 дана|у последњих $1 дана}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|измена|измене|измена}} {{PLURAL:$3|претходни дан|у последња $3 дана|у последњих $3 дана}}',
+'activeusers-from' => 'Прикажи кориснике почев од:',
+'activeusers-hidebots' => 'Сакриј ботове',
+'activeusers-hidesysops' => 'Сакриј администраторе',
+'activeusers-noresult' => 'Корисник није пронађен.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Права корисничких група',
 'listgrouprights-summary' => 'Следи списак корисничких група на овом викију, заједно с правима приступа.
@@ -2598,6 +2617,7 @@ $UNWATCHURL
 'prot_1movedto2' => '{{GENDER:|је преместио|је преместила|је преместио}} [[$1]] у [[$2]]',
 'protect-badnamespace-title' => 'Незаштитљив именски простор',
 'protect-badnamespace-text' => 'Странице у овом именском простору се не могу заштитити.',
+'protect-norestrictiontypes-title' => 'Незаштитљива страна',
 'protect-legend' => 'Потврдите заштиту',
 'protectcomment' => 'Разлог:',
 'protectexpiry' => 'Истиче:',
@@ -2614,9 +2634,9 @@ $UNWATCHURL
 'protect-cascadeon' => 'Ова страница је тренутно заштићена јер се налази на {{PLURAL:$1|страници која има|страницама које имају}} преносиву заштиту.
 Можете да промените степен заштите, али то неће утицати на преносиву заштиту.',
 'protect-default' => 'Дозволи свим корисницима',
-'protect-fallback' => 'Ð\9fоÑ\82Ñ\80ебно Ñ\98е Ð¸Ð¼Ð°Ñ\82и Ð¾Ð²Ð»Ð°Ñ\88Ñ\9bеÑ\9aа „$1“',
-'protect-level-autoconfirmed' => 'Ð\91локиÑ\80аÑ\98 Ð½Ð¾Ð²Ðµ Ð¸ Ð°Ð½Ð¾Ð½Ð¸Ð¼Ð½Ðµ ÐºÐ¾Ñ\80иÑ\81нике',
-'protect-level-sysop' => 'Само Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80аÑ\82оÑ\80и',
+'protect-fallback' => 'Ð\94озвоÑ\99ено Ñ\81амо ÐºÐ¾Ñ\80иÑ\81ниÑ\86има Ñ\81а Ð´Ð¾Ð·Ð²Ð¾Ð»Ð¾Ð¼ „$1“',
+'protect-level-autoconfirmed' => 'Ð\94опÑ\83Ñ\88Ñ\82ено Ñ\81амо Ð°Ñ\83Ñ\82омаÑ\82Ñ\81ки Ð¿Ð¾Ñ\82вÑ\80Ñ\92еним ÐºÐ¾Ñ\80иÑ\81ниÑ\86има',
+'protect-level-sysop' => 'Ð\94опÑ\83Ñ\88Ñ\82ено Ñ\81амо Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80аÑ\82оÑ\80има',
 'protect-summary-cascade' => 'преносива заштита',
 'protect-expiring' => 'истиче $1 (UTC)',
 'protect-expiring-local' => 'истиче $1',
@@ -3112,6 +3132,7 @@ $1',
 'import-error-interwiki' => 'Не могу да увезем страницу „$1“ јер је њен назив резервисан за спољно повезивање (међувики).',
 'import-error-special' => 'Не могу да увезем страницу „$1“ јер она припада посебном именском простору које не прихвата странице.',
 'import-error-invalid' => 'Не могу да увезем страницу „$1“ јер је њен назив неисправан.',
+'import-error-unserialize' => 'Верзија $2 странице $1 не може бити прочитана/увезена. Записано је да верзија користи $3 тип садржаја у $4 формату.',
 'import-options-wrong' => '{{PLURAL:$2|Погрешна опција|Погрешне опције}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Наведена основна страница има неисправан наслов.',
 'import-rootpage-nosubpage' => 'Именски простор „$1“ основне странице не дозвољава подстранице.',
@@ -3270,6 +3291,7 @@ $1',
 'pageinfo-robot-noindex' => 'Не може да се попише',
 'pageinfo-views' => 'Број прегледа',
 'pageinfo-watchers' => 'Број надгледача страница',
+'pageinfo-few-watchers' => 'Мање од $1 {{PLURAL:$1|пратиоца|пратилаца}}',
 'pageinfo-redirects-name' => 'Преусмеравања на страницу',
 'pageinfo-subpages-name' => 'Подстранице ове странице',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|преусмерење|преусмерења|преусмерења}}; $3 {{PLURAL:$3|непреусмерење|непреусмерења|непреусмерења}})',
@@ -3284,6 +3306,7 @@ $1',
 'pageinfo-magic-words' => '{{PLURAL:$1|Магична реч|Магичне речи}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Сакривена категорија|Сакривене категорије}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Укључени шаблон|Укључени шаблони}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Страница|Странице}} укључене у ($1)',
 'pageinfo-toolboxlink' => 'Подаци о страници',
 'pageinfo-redirectsto' => 'Преусмерава на',
 'pageinfo-redirectsto-info' => 'подаци',
@@ -3292,6 +3315,10 @@ $1',
 'pageinfo-protect-cascading' => 'Преносива заштита страница важи одавде',
 'pageinfo-protect-cascading-yes' => 'Да',
 'pageinfo-protect-cascading-from' => 'Странице са преносивом заштитом од',
+'pageinfo-category-info' => 'Информације о категорији',
+'pageinfo-category-pages' => 'Број страница',
+'pageinfo-category-subcats' => 'Број поткатегорија',
+'pageinfo-category-files' => 'Број датотека',
 
 # Skin names
 'skinname-cologneblue' => 'Келнско плава',
@@ -3345,6 +3372,7 @@ $1',
 'file-nohires' => 'Већа резолуција није доступна.',
 'svg-long-desc' => 'SVG датотека, номинално $1 × $2 пиксела, величина: $3',
 'svg-long-desc-animated' => 'Анимирана SVG датотека, номинално: $1 × $2 пиксела, величина: $3',
+'svg-long-error' => 'Неисправна SVG датотека: $1',
 'show-big-image' => 'Пуна величина',
 'show-big-image-preview' => 'Величина овог приказа: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Друга резолуција|Друге резолуције}}: $1.',
index e0ac7ce..ba8beb8 100644 (file)
@@ -2291,6 +2291,15 @@ Det krävs åtminstone en toppdomän, t.ex. "*.org".<br />
 'listusers-noresult' => 'Ingen användare hittades.',
 'listusers-blocked' => '(blockerad)',
 
+# Special:ActiveUsers
+'activeusers' => 'Lista över aktiva användare',
+'activeusers-intro' => 'Detta är en lista på användare som har haft någon form av aktivitet inom de senaste $1 {{PLURAL:$1|dygnet|dygnen}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|handling|handlingar}} {{PLURAL:$3|det senaste dygnet|de senaste $3 dygnen}}',
+'activeusers-from' => 'Visa användare från och med:',
+'activeusers-hidebots' => 'Göm botar',
+'activeusers-hidesysops' => 'Dölj administratörer',
+'activeusers-noresult' => 'Inga användare funna.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Behörigheter för användargrupper',
 'listgrouprights-summary' => 'Följande lista visar vilka användargrupper som är definierade på den här wikin och vilka behörigheter grupperna har.
index 563d375..410d700 100644 (file)
@@ -1963,6 +1963,15 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'listusers-noresult' => 'వాడుకరి దొరకలేదు.',
 'listusers-blocked' => '(నిరోధించారు)',
 
+# Special:ActiveUsers
+'activeusers' => 'క్రియాశీల వాడుకరుల జాబితా',
+'activeusers-intro' => 'ఇది గత $1 {{PLURAL:$1|రోజులో|రోజులలో}} ఏదైనా కార్యకలాపం చేసిన వాడుకరుల జాబితా.',
+'activeusers-count' => 'గడచిన {{PLURAL:$3|ఒక రోజు|$3 రోజుల}}లో $1 {{PLURAL:$1|మార్పు|మార్పులు}}',
+'activeusers-from' => 'వాడుకరులను ఇక్కడ నుండి చూపించు:',
+'activeusers-hidebots' => 'బాట్లను దాచు',
+'activeusers-hidesysops' => 'నిర్వాహకులను దాచు',
+'activeusers-noresult' => 'వాడుకరులెవరూ లేరు.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'వాడుకరి గుంపుల హక్కులు',
 'listgrouprights-summary' => 'కింది జాబితాలో ఈ వికీలో నిర్వచించిన వాడుకరి గుంపులు, వాటికి సంబంధించిన హక్కులు ఉన్నాయి.
index 0e0b4bc..5181192 100644 (file)
@@ -2067,6 +2067,15 @@ $1',
 'listusers-noresult' => 'ไม่พบผู้ใช้',
 'listusers-blocked' => '(ถูกบล็อก)',
 
+# Special:ActiveUsers
+'activeusers' => 'รายการผู้ใช้ที่มีความเคลื่อนไหว',
+'activeusers-intro' => 'นี่คือรายการผู้ใช้ที่มีกิจกรรมใด ๆ ในช่วง $1 วันที่ผ่านมา',
+'activeusers-count' => '{{PLURAL:$1|ปฏิบัติการล่าสุด|ปฏิบัติการล่าสุด $1 รายการ}} ในช่วง $3 วันที่ผ่านมา',
+'activeusers-from' => 'แสดงผู้ใช้เริ่มจาก:',
+'activeusers-hidebots' => 'ซ่อนบอต',
+'activeusers-hidesysops' => 'ซ่อนผู้ดูแลระบบ',
+'activeusers-noresult' => 'ไม่พบผู้ใช้',
+
 # Special:ListGroupRights
 'listgrouprights' => 'สิทธิกลุ่มผู้ใช้',
 'listgrouprights-summary' => 'ด้านล่างเป็นรายการกลุ่มผู้ใช้ที่นิยามบนวิกินี้ และสิทธิการเข้าถึงที่เกี่ยวข้อง
index d70542a..cb22aef 100644 (file)
@@ -2358,6 +2358,15 @@ $1',
 'listusers-noresult' => 'Не знайдено користувачів.',
 'listusers-blocked' => '({{GENDER:$1|заблокований|заблокована|заблокований}})',
 
+# Special:ActiveUsers
+'activeusers' => 'Список активних користувачів',
+'activeusers-intro' => 'Це список користувачів, які здійснювали які-небудь дії за {{PLURAL:$1|останній $1 день|останні $1 дні|останні $1 днів}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|дія|дії|дій}} за {{PLURAL:$3|останній $3 день|останні $3 дні|останні $3 днів}}',
+'activeusers-from' => 'Показувати користувачів, починаючи з:',
+'activeusers-hidebots' => 'Приховати ботів',
+'activeusers-hidesysops' => 'Приховати адміністраторів',
+'activeusers-noresult' => 'Не знайдено користувачів.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Права груп користувачів',
 'listgrouprights-summary' => 'Нижче наведений список груп користувачів у цій вікі і права для кожної групи.
index da12663..c1a5a78 100644 (file)
@@ -1133,6 +1133,13 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'listusers-noresult' => 'Foydalanuvchilar topilmadi.',
 'listusers-blocked' => '(chetlashtirilgan)',
 
+# Special:ActiveUsers
+'activeusers' => 'Faol foydalanuvchilar roʻyxati',
+'activeusers-from' => 'Quyidagidan boshlanuvchi foydalanuvchilarni koʻrsatish:',
+'activeusers-hidebots' => 'Botlarni yashirish',
+'activeusers-hidesysops' => 'Maʼmurlarni yashirish',
+'activeusers-noresult' => 'Foydalanuvchilar topilmadi.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Foydalanuvchilar guruhi huquqlari',
 'listgrouprights-group' => 'Guruh',
@@ -1440,6 +1447,7 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'movearticle' => 'Sahifani qayta nomlash',
 'movenologin' => 'Siz tizimga kirmagansiz',
 'newtitle' => 'Yangi nom:',
+'move-watch' => 'Ushbu sahifani kuzatuv roʻyxatiga qoʻshish',
 'movepagebtn' => 'Sahifani koʻchirish',
 'pagemovedsub' => 'Sahifa qayta nomlandi',
 'movepage-moved' => '\'\'\'"$1" nomli sahifa "$2" nomli sahifaga koʻchirildi\'\'\'',
index 7b2e73e..7eb26fd 100644 (file)
@@ -570,7 +570,7 @@ Nó desmentegarte de personałixare łe [[Special:Preferences|prefarense de {{SI
 'yourname' => 'Nome utente:',
 'userlogin-yourname' => 'Nome utente',
 'userlogin-yourname-ph' => 'Inserissi el to nome utente',
-'createacct-helpusername-url' => '{{ns:Project}}:Nome utente',
+'createacct-helpusername-url' => '{{ns:Project}}:Politica_nome_utente',
 'createacct-helpusername-link' => '[[{{MediaWiki:createacct-helpusername-url}}|(jùtame a sièliere)]]',
 'yourpassword' => 'Password:',
 'userlogin-yourpassword' => 'Password',
@@ -614,7 +614,7 @@ Nó desmentegarte de personałixare łe [[Special:Preferences|prefarense de {{SI
 'createacct-reason' => 'Motivo',
 'createacct-reason-ph' => "Com'èla te sì drio crear n'altra utensa",
 'createacct-captcha' => 'Controlo de sicuresa',
-'createacct-captcha-help-url' => '{{ns:Project}}:Richieste de utense',
+'createacct-captcha-help-url' => '{{ns:Project}}:Dimanda na utensa',
 'createacct-imgcaptcha-help' => "No sito mia bon de védar l'imagine? [[{{MediaWiki:createacct-captcha-help-url}}|Dimanda na utensa]]",
 'createacct-imgcaptcha-ph' => 'Inserissi el testo che te vedi de sora',
 'createacct-submit' => 'Crea la to utensa',
@@ -2087,6 +2087,15 @@ Xe nesesario almanco un dominio de primo liveło, tipo "*.org".<br />
 'listusers-noresult' => 'Nissun utente el risponde ai criteri inpostà.',
 'listusers-blocked' => '(blocà)',
 
+# Special:ActiveUsers
+'activeusers' => 'Lista dei utenti ativi',
+'activeusers-intro' => 'Sta qua xe la lista dei utenti che ga fato calcossa {{PLURAL:$1|sto ultimo zorno|sti ultimi $1 zorni}}.',
+'activeusers-count' => "$1 {{PLURAL:$1|asion}} {{PLURAL:$3|inte'l ultimo xorno|inte i ultimi $3 xorni}}",
+'activeusers-from' => 'Fà védar i utenti a partir da:',
+'activeusers-hidebots' => 'Scondi i bot',
+'activeusers-hidesysops' => 'Scondi i aministradori',
+'activeusers-noresult' => 'Nissun utente catà.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Diriti dei grupi utenti',
 'listgrouprights-summary' => 'Sta qua la xe na lista dei grupi de utenti definìi su sta wiki, coi diriti asocià a ognuno.
index f5bfdad..a415fed 100644 (file)
@@ -2260,6 +2260,15 @@ Xem thêm [[Special:WantedCategories|thể loại cần thiết]].',
 'listusers-noresult' => 'Không thấy thành viên.',
 'listusers-blocked' => '(bị cấm)',
 
+# Special:ActiveUsers
+'activeusers' => 'Danh sách thành viên tích cực',
+'activeusers-intro' => 'Dánh sách này liệt kê các thành viên đã hoạt động cách nào đó trong $1 ngày qua.',
+'activeusers-count' => '$1 tác vụ trong {{PLURAL:$3|ngày|$3 ngày}} qua',
+'activeusers-from' => 'Hiển thị thành viên bắt đầu từ:',
+'activeusers-hidebots' => 'Ẩn robot',
+'activeusers-hidesysops' => 'Ẩn bảo quản viên',
+'activeusers-noresult' => 'Không thấy thành viên.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Nhóm thành viên',
 'listgrouprights-summary' => 'Dưới đây là danh sách nhóm thành viên được định nghĩa tại wiki này, với mức độ truy cập của từng nhóm.
index ec4deeb..6b460c0 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Iketsi
  * @author Kaganer
  * @author Malafaya
  * @author Reedy
@@ -141,8 +142,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Jonön numi gebanas galädöl',
 'tog-oldsig' => 'Dispenäd dabinöl:',
 'tog-fancysig' => 'Dispenäd balugik (nen yüms lü gebanapad)',
-'tog-externaleditor' => 'Gebön nomiko redakömi plödik (te pro jäfüdisevans; paramets patik paneodons su nünöm olik)',
-'tog-externaldiff' => 'Gebön nomiko difi plödik (te pro jäfüdisevans; paramets patik paneodons su nünöm olik)',
 'tog-showjumplinks' => 'Dälön lügolovi me yüms „lübunöl“',
 'tog-uselivepreview' => 'Gebön büologedi itjäfidik (JavaScript) (Sperimäntik)',
 'tog-forceeditsummary' => 'Sagön obe, ven redakaplän brefik vagon',
@@ -237,8 +236,8 @@ $messages = array(
 'newwindow' => '(maifikon in fenät nulik)',
 'cancel' => 'Stöpädön',
 'moredotdotdot' => 'Plu...',
-'mypage' => 'Pad obik',
-'mytalk' => 'Bespiks obik',
+'mypage' => 'Pad',
+'mytalk' => 'Bespiks',
 'anontalk' => 'Bespiks ela IP at',
 'navigation' => 'Nafam',
 'and' => '&#32;e',
@@ -408,9 +407,9 @@ Mögos i, das atos sinifon, das dabinon säkädil pö program fa {{SITENAME}} pa
 'dberrortext' => 'Süntagapök pö geb vüka at ejenon.
 Atos ba sinifön, das dabinon säkäd pö program.
 Steifül lätik ad gebön vüki äbinon:
-<blockquote><tt>$1</tt></blockquote>
-se dunod: „<tt>$2</tt>“.
-Nünodem ägesedon pökanuni: „<tt>$3: $4</tt>“.',
+<blockquote><code>$1</code></blockquote>
+se dunod: „<code>$2</code>“.
+Nünodem ägesedon pökanuni: „<samp>$3: $4</samp>“.',
 'dberrortextcl' => 'Süntagapök pö geb vüka at ejenon.
 Steifül lätik ad gebön vüki at äbinon:
 „$1“
@@ -912,7 +911,7 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Logön padis labü foyümot at]]',
 'searchprofile-articles' => 'Ninädapads',
 'searchprofile-project' => 'Yufa e Proyegapads',
-'searchprofile-images' => 'Ragivs',
+'searchprofile-images' => 'Mödamedäd',
 'searchprofile-everything' => 'Valikos',
 'searchprofile-advanced' => 'Paramets pluik',
 'searchprofile-articles-tooltip' => 'Sukön in $1',
@@ -930,7 +929,7 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'search-interwiki-default' => 'Seks se $1:',
 'search-interwiki-more' => '(pluikos)',
 'search-relatedarticle' => 'Tefik',
-'mwsuggest-disable' => 'Nemögükön mobis ela AJAX',
+'mwsuggest-disable' => 'Nemögükön sukamobis',
 'searcheverything-enable' => 'Sukolöd in nemaspads valik',
 'searchrelated' => 'tefik',
 'searchall' => 'valik',
@@ -950,17 +949,9 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'search-external' => 'Suk plödik',
 'searchdisabled' => 'Suk in {{SITENAME}} penemogükon. Vütimo kanol sukön yufü el Google. Demolös, das liseds onik tefü ninäd in {{SITENAME}} ba no binon anuik.',
 
-# Quickbar
-'qbsettings' => 'Stumem',
-'qbsettings-none' => 'Nonik',
-'qbsettings-fixedleft' => 'nedeto (fimiko)',
-'qbsettings-fixedright' => 'Deto (fimiko)',
-'qbsettings-floatingleft' => 'nedeto (vebölo)',
-'qbsettings-floatingright' => 'deto (vebölo)',
-
 # Preferences page
 'preferences' => 'Buükams',
-'mypreferences' => 'Buükams obik',
+'mypreferences' => 'Buükams',
 'prefs-edits' => 'Num redakamas:',
 'prefsnologin' => 'No enunädon oki',
 'prefsnologintext' => 'Nedol <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} nunädön oli]</span> büä kanol votükön gebanabuükamis.',
@@ -1017,9 +1008,9 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'prefs-custom-css' => 'CSS nekösömik',
 'prefs-custom-js' => 'JavaScript nekösömik',
 'youremail' => 'Ladet leäktronik *:',
-'username' => 'Gebananem:',
+'username' => '{{GENDER:$1|Gebananem}}:',
 'uid' => 'Gebanadientif:',
-'prefs-memberingroups' => 'Liman {{PLURAL:$1|grupa|grupas}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Liman}} {{PLURAL:$1|grupa|grupas}}:',
 'yourrealname' => 'Nem jenöfik *:',
 'yourlanguage' => 'Pük:',
 'yournick' => 'Dispenäd nulik:',
@@ -1590,7 +1581,7 @@ Logolös i [[Special:WantedCategories|klads pevilöl]].',
 'sp-deletedcontributions-contribs' => 'keblünots',
 
 # Special:LinkSearch
-'linksearch' => 'Yüms plödik',
+'linksearch' => 'Suk yümas plödik',
 'linksearch-pat' => 'Sukapated:',
 'linksearch-ns' => 'Nemaspad:',
 'linksearch-ok' => 'Suk',
@@ -1651,8 +1642,8 @@ Ba dabinons [[{{MediaWiki:Listgrouprights-helppage}}|nüns pluik]] tefü gebanag
 'emailuserfooter' => 'Pened at pesedon fa geban: $1 gebane: $2 medü program: „sedön gebane penedi“ ela {{SITENAME}}.',
 
 # Watchlist
-'watchlist' => 'Galädalised obik',
-'mywatchlist' => 'Galädalised obik',
+'watchlist' => 'Galädalised',
+'mywatchlist' => 'Galädalised',
 'watchlistfor2' => 'Ela $1 $2',
 'nowatchlist' => 'Labol nosi in galädalised olik.',
 'watchlistanontext' => '$1 ad logön u redakön lienis galädaliseda olik',
@@ -1884,9 +1875,9 @@ $1',
 'blanknamespace' => '(Cifik)',
 
 # Contributions
-'contributions' => 'Gebanakeblünots',
+'contributions' => '{{GENDER:$1|Gebanakeblünots}}',
 'contributions-title' => 'Gebanakeblünots pro $1',
-'mycontris' => 'Keblünots obik',
+'mycontris' => 'Keblünots',
 'contribsub2' => 'Tefü $1 ($2)',
 'nocontribs' => 'Votükams nonik petuvons me paramets at.',
 'uctop' => '(lätik)',
@@ -1922,7 +1913,7 @@ $1',
 'whatlinkshere-hideredirs' => '$1 lüodükömis',
 'whatlinkshere-hidetrans' => '$1 ninükodis',
 'whatlinkshere-hidelinks' => '$1 yümis',
-'whatlinkshere-hideimages' => '$1 yümis magodas',
+'whatlinkshere-hideimages' => '$1 yümis ragivas',
 'whatlinkshere-filters' => 'Suls',
 
 # Block/unblock
@@ -2290,7 +2281,7 @@ Pad luveratiko ninädon yümi lü bevüresodatopäd plödik in blägalised.',
 'spam_blanking' => 'Moükam revidas valik (bi ninädons yüms lü $1)',
 
 # Info page
-'pageinfo-header-edits' => 'Redakams',
+'pageinfo-header-edits' => 'Jenotem redakamas',
 
 # Patrolling
 'markaspatrolleddiff' => 'Zepön',
@@ -2744,13 +2735,6 @@ Kanol i [[Special:EditWatchlist|gebön redakametodi kösömik]].',
 'version-software-product' => 'Prodäd',
 'version-software-version' => 'Fomam',
 
-# Special:FilePath
-'filepath' => 'Ragivaluveg',
-'filepath-page' => 'Ragiv:',
-'filepath-submit' => 'Gololöd',
-'filepath-summary' => 'Pad patik at tuvon luvegi lölöfik ragiva.
-Magods pajonons ma fomät gudikün, ragivasots votik pamaifükons stedöfo kobü programs onsik.',
-
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Sukön ragivis petelüköl',
 'fileduplicatesearch-summary' => 'Sukön ragivis petelüköl stabü völad kontrolasaedota onsik.',
index 95eb1d2..54ab3d0 100644 (file)
@@ -616,9 +616,12 @@ $2',
 'yourpassword' => 'פאסווארט',
 'userlogin-yourpassword' => 'פאַסווארט',
 'userlogin-yourpassword-ph' => 'אַרײַנגעבן אײַער פאַסווארט',
+'createacct-yourpassword-ph' => 'אַרײַנגעבן א פאַסווארט',
 'yourpasswordagain' => 'ווידער אריינקלאפן פאסווארט',
+'createacct-yourpasswordagain' => 'באשטעטיקן פאסווארט',
+'createacct-yourpasswordagain-ph' => 'ארײַנגעבן פאסווארט נאכאמאל',
 'remembermypassword' => 'געדיינק מײַן אַרײַנלאגירן אויף דעם קאמפיוטער (ביז  $1 {{PLURAL:$1|טאָג|טעג}})',
-'userlogin-remembermypassword' => '×\92×¢×\93ענק ×\9e×\99×\9a',
+'userlogin-remembermypassword' => '×\9c×\90×\96 ×\9e×\99×\9a ×\91×\9cײַ×\91×\9f ×\90רײַנ×\9c×\90×\92×\99ר×\98',
 'userlogin-signwithsecure' => 'איינשרייבן מיט זיכערן סארווער',
 'securelogin-stick-https' => 'בלייַבן פארבונדן צו HTTPS נאָכן ארײַנלאָגירן',
 'yourdomainname' => 'אײַער געביט:',
@@ -642,8 +645,23 @@ $2',
 'userlogin-resetlink' => 'פארגעסן אײַערע אַרײַנלאָגירן פרטים?',
 'helplogin-url' => 'Help:אריינלאגירן',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|הילף מיט אריינלאגירן]]',
+'createacct-join' => 'גיט ארײַן אײַער אינפֿארמאציע אונטן.',
+'createacct-emailrequired' => 'בליצפּאָסט אַדרעס',
+'createacct-emailoptional' => 'בליצפאסט אדרעס (אפציאנאל)',
+'createacct-email-ph' => 'קלאַפט ארײַן אײַער בליצפּאָסט אַדרעס',
 'createaccountmail' => 'ניצן א פראוויזאריש פאסווארט און שיקן צום ע-פאסט אדרעס געצייכנט אונטן',
+'createacct-realname' => 'עכטער נאמען (אפציאנאל)',
 'createaccountreason' => 'אורזאַך:',
+'createacct-reason' => 'אורזאך',
+'createacct-reason-ph' => 'פֿארוואס שאפֿט איר נאך א קאנטע',
+'createacct-captcha' => 'פארזיכערן קאנטראל',
+'createacct-captcha-help-url' => '{{ns:Project}}:בעטן א קאנטע',
+'createacct-imgcaptcha-help' => 'בילד נישט זעבאר? [[{{MediaWiki:createacct-captcha-help-url}}|Request an account]]',
+'createacct-imgcaptcha-ph' => 'קלאפט ארײַן דעם טעקסט איר זעט אויבן',
+'createacct-submit' => 'שאפֿט אײַער קאנטע',
+'createacct-benefit-heading' => '{{SITENAME}} איז געמאכט דורך מענטשן ווי איר.',
+'createacct-benefit-body1' => 'רעדאקטירונגען',
+'createacct-benefit-body2' => 'בלעטער',
 'badretype' => 'די פאסווערטער וואס איר האט אריינגעלייגט זענען נישט אייניג.',
 'userexists' => 'דער באַניצער נאָמען איז שוין געניצט.
 ביטע קלײַבט אױס אַן אַנדער נאָמען.',
@@ -2089,6 +2107,15 @@ $1",
 'listusers-noresult' => 'קיין באניצער נישט געטראפֿן.',
 'listusers-blocked' => '(בלאקירט)',
 
+# Special:ActiveUsers
+'activeusers' => 'ליסטע פֿון אַקטיווע באַניצער',
+'activeusers-intro' => 'דאָס איז א ליסטע פֿון באַניצער וואָס זענען געווען אַקטיוו אינערהאָלב  $1 {{PLURAL:$1|דעם לעצטן טאָג|די לעצטע $1 טעג}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|פעולה|פעולות}} אין  {{PLURAL:$3|דעם לעצטן טאָג|די לעצטע $3 טעג}}',
+'activeusers-from' => 'ווײַזן באַניצער אָנהייבנדיג פון:',
+'activeusers-hidebots' => 'באַהאַלטן באטן',
+'activeusers-hidesysops' => 'באַהאַלטן סיסאפן',
+'activeusers-noresult' => 'קיין באניצער נישט געטראפֿן.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'באַניצער גרופע רעכטן',
 'listgrouprights-summary' => "פֿאלגנד איז א רשימה פֿון באַניצער גרופעס דעפֿינירט אויף דער דאָזיקער וויקי, מיט זײַערע אַסאציאירטע צוטריט רעכטן.
index f4e9156..a2481cc 100644 (file)
@@ -2039,6 +2039,15 @@ Orúkọ ibiàyè pọndandan, fún àpẹrẹ "*.org".<br />
 'listusers-noresult' => 'Kò rí oníṣe kankan.',
 'listusers-blocked' => '(dídínà)',
 
+# Special:ActiveUsers
+'activeusers' => 'Àtòjọ àwọn oníṣe aláàgbéṣe',
+'activeusers-intro' => 'Èyí ni àtòjọ àwọn oníṣe tí wọ́n ní irú àgbéṣe kan láàrin {{PLURAL:$1|ọjọ́|ọjọ́}} $1 sẹ́yìn.',
+'activeusers-count' => '{{PLURAL:$1|Àtúnṣe|Àwọn àtúnṣe}} $1 ní {{PLURAL:$3|ọjọ́|ọjọ́}} $3 sẹ́yìn',
+'activeusers-from' => 'Ìfihàn àwọn oníṣe nípa bíbẹ̀rẹ̀ láti:',
+'activeusers-hidebots' => 'Ìbòmọ́lẹ̀ àwọn bọt',
+'activeusers-hidesysops' => 'Ìbòmọ́lẹ̀ àwọn olùmójútó',
+'activeusers-noresult' => 'Kò rí oníṣe kankan.',
+
 # Special:ListGroupRights
 'listgrouprights' => 'Àwọn ẹ̀tọ́ ẹgbẹ́ oníṣe',
 'listgrouprights-summary' => 'Nísàlẹ̀ ni àtòjọ àwọn ẹgbẹ́ oníṣe tó nítumọ̀ lórí wiki yìí, pẹ̀lú àwọn ẹ̀tọ́ lílò wọn.
index a376d9d..c96b9cd 100644 (file)
@@ -16,6 +16,7 @@
  * @author Waihorace
  * @author William915
  * @author Wong128hk
+ * @author Yfdyh000
  */
 
 $namespaceNames = array(
@@ -261,8 +262,6 @@ $messages = array(
 'tog-shownumberswatching' => '顯示有幾多人監視',
 'tog-oldsig' => '原有簽名嘅預覽:',
 'tog-fancysig' => '將簽名以維基字對待(冇自動連結)',
-'tog-externaleditor' => '預設用外掛編輯器(高階者專用,需要響你部電腦度做一啲特別設定。[//www.mediawiki.org/wiki/Manual:External_editors 更多資訊。])',
-'tog-externaldiff' => '預設用外掛比較器(高階者專用,需要響你部電腦度做一啲特別設定。[//www.mediawiki.org/wiki/Manual:External_editors 更多資訊。])',
 'tog-showjumplinks' => '啟用 "跳至" 協助連結',
 'tog-uselivepreview' => '用即時預覽(需要JavaScript)(實驗緊)',
 'tog-forceeditsummary' => '我冇入修改註解時通知我',
@@ -277,6 +276,7 @@ $messages = array(
 'tog-showhiddencats' => '顯示隱藏類',
 'tog-noconvertlink' => '唔轉連結標題',
 'tog-norollbackdiff' => '進行反轉之後略過差異',
+'tog-useeditwarning' => '當我離開未保存好嘅修改嗰陣警告我',
 
 'underline-always' => '全部',
 'underline-never' => '永不',
@@ -826,7 +826,7 @@ $1',
 '''佢嘅內容重未儲存!'''",
 'userinvalidcssjstitle' => "'''警告:''' 無叫做 \"\$1\" 嘅畫面。請記住自訂介面的 .css 和 .js 頁面時應使用細楷,例如:{{ns:user}}:Foo/vector.css 而唔係 {{ns:user}}:Foo/Vector.css 。",
 'updated' => '(己更新)',
-'note' => "'''留意:'''",
+'note' => "'''留意'''",
 'previewnote' => "'''請記住呢個只係預覽。'''
 更改嘅内容重未儲存!",
 'previewconflict' => '呢個預覽係反映如果你選擇儲存嘅話,嘅上面嘅文字編輯區裏面嘅字會儲存落嚟。',
@@ -903,6 +903,8 @@ $1',
 'edit-no-change' => '你嘅編輯已經略過,因為文字無改過。',
 'edit-already-exists' => '唔可以開一新版。
 佢已經存在。',
+'editwarning-warning' => '離開呢一版會令到你嘅修改唔見咗。
+你可以響你嘅喜好設定嘅"{{int:prefs-editing}}"小節度停用呢個警告。',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => '警告: 呢一版有太多耗費嘅語法功能呼叫。
@@ -1162,14 +1164,6 @@ $1",
 'search-external' => '出面搵嘢',
 'searchdisabled' => '{{SITENAME}}嘅搜尋功能已經關閉。你可以利用Google嚟搵。不過佢哋對{{SITENAME}}嘅索引可能唔係最新嘅。',
 
-# Quickbar
-'qbsettings' => '快捷列',
-'qbsettings-none' => '無',
-'qbsettings-fixedleft' => '左邊固定',
-'qbsettings-fixedright' => '右邊固定',
-'qbsettings-floatingleft' => '左邊浮動',
-'qbsettings-floatingright' => '右邊浮動',
-
 # Preferences page
 'preferences' => '喜好設定',
 'mypreferences' => '自訂喜好',
@@ -1644,7 +1638,6 @@ $1',
 'http-read-error' => 'HTTP讀取錯誤。',
 'http-timed-out' => 'HTTP請求已過時。',
 'http-curl-error' => '擷取URL嗰陣出錯:$1',
-'http-host-unreachable' => '到唔到URL。',
 'http-bad-status' => '當做緊HTTP請求嗰陣出現咗問題:$1 $2',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -2644,13 +2637,8 @@ $1',
 
 # Stylesheets
 'common.css' => '/* 響呢度放 CSS 碼來改成個網站嘅畫面 */',
-'standard.css' => '/* 響呢度放 CSS 碼去改用戶用嘅傳統畫面 */',
-'nostalgia.css' => '/* 響呢度放 CSS 碼去改用戶用嘅懷舊畫面 */',
 'cologneblue.css' => '/* 響呢度放 CSS 碼去改用戶用嘅科隆藍畫面 */',
 'monobook.css' => '/* 響呢度放 CSS 碼去改用戶用嘅 Monobook 畫面 */',
-'myskin.css' => '/* 響呢度放 CSS 碼去改用戶用嘅我嘅畫面 */',
-'chick.css' => '/* 響呢度放 CSS 碼去改用戶用嘅俏畫面 */',
-'simple.css' => '/* 響呢度放 CSS 碼去改用戶用嘅簡單畫面 */',
 'modern.css' => '/* 響呢度放 CSS 碼去改用戶用嘅摩登畫面 */',
 'vector.css' => '/* 響呢度放 CSS 碼去改用戶用嘅域達畫面 */',
 'print.css' => '/* 響呢度放 CSS 碼去改打印輸出 */',
@@ -2658,13 +2646,8 @@ $1',
 
 # Scripts
 'common.js' => '/* 響每一次個頁面載入時,所有用戶都會載入呢度任何嘅JavaScript。 */',
-'standard.js' => '/* 響每一次個頁面載入時,用標準畫面嘅用戶都會載入呢度任何嘅JavaScript */',
-'nostalgia.js' => '/* 響每一次個頁面載入時,用懷舊畫面嘅用戶都會載入呢度任何嘅JavaScript */',
 'cologneblue.js' => '/* 響每一次個頁面載入時,用科隆藍畫面嘅用戶都會載入呢度任何嘅JavaScript */',
 'monobook.js' => '/* 響每一次個頁面載入時,用 Monobook 畫面嘅用戶都會載入呢度任何嘅JavaScript */',
-'myskin.js' => '/* 響每一次個頁面載入時,用我嘅畫面嘅用戶都會載入呢度任何嘅JavaScript */',
-'chick.js' => '/* 響每一次個頁面載入時,用俏畫面嘅用戶都會載入呢度任何嘅JavaScript */',
-'simple.js' => '/* 響每一次個頁面載入時,用簡單畫面嘅用戶都會載入呢度任何嘅JavaScript */',
 'modern.js' => '/* 響每一次個頁面載入時,用摩登畫面嘅用戶都會載入呢度任何嘅JavaScript */',
 'vector.js' => '/* 響每一次個頁面載入時,用域達畫面嘅用戶都會載入呢度任何嘅JavaScript */',
 
@@ -2693,13 +2676,8 @@ $1',
 'spam_blanking' => '全部版本都含有指去$1嘅連結,留空',
 
 # Skin names
-'skinname-standard' => '傳統',
-'skinname-nostalgia' => '懷舊',
 'skinname-cologneblue' => '科隆藍',
 'skinname-monobook' => 'MonoBook',
-'skinname-myskin' => '我嘅畫面',
-'skinname-chick' => '俏',
-'skinname-simple' => '簡單',
 'skinname-modern' => '摩登',
 'skinname-vector' => 'Vector',
 
@@ -2771,8 +2749,6 @@ $1',
 
 /*
 Short names for language variants used for language conversion links.
-To disable showing a particular link, set it to 'disable', e.g.
-'variantname-zh-sg' => 'disable',
 Variants for Chinese language
 */
 'variantname-zh-hans' => '簡體',
@@ -3262,12 +3238,6 @@ MediaWiki是基於使用目的而加以發佈,但係就唔會負上任何嘅
 'version-software-product' => '產品',
 'version-software-version' => '版本',
 
-# Special:FilePath
-'filepath' => '檔案路徑',
-'filepath-page' => '檔名:',
-'filepath-submit' => '去',
-'filepath-summary' => '呢個特別頁拎一個檔案嘅完整路徑。圖像會以完整嘅解像度顯示,其它嘅檔案類型會以同佢哋關聯咗嘅程式啟動。',
-
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => '㨂重覆檔案',
 'fileduplicatesearch-summary' => '用重覆檔案嘅切細值去搵個檔案係唔係重覆。',
index 08d6f54..c1f0035 100644 (file)
@@ -598,9 +598,9 @@ $1',
 'mainpage' => '首页',
 'mainpage-description' => '首页',
 'policy-url' => 'Project:方针',
-'portal' => '社å\8cºä¸»页',
-'portal-url' => 'Project:社å\8cºä¸»页',
-'privacy' => '隐私政策',
+'portal' => '社å\8cºä¸\93页',
+'portal-url' => 'Project:社å\8cºä¸\93页',
+'privacy' => 'é\9a\90ç§\81æ\9d\83æ\94¿ç­\96',
 'privacypage' => 'Project:隐私权政策',
 
 'badaccess' => '权限错误',
@@ -2215,6 +2215,15 @@ $1',
 'listusers-noresult' => '找不到用户。',
 'listusers-blocked' => '(已封禁)',
 
+# Special:ActiveUsers
+'activeusers' => '活跃用户列表',
+'activeusers-intro' => '这个列表列出了最近$1天进行过操作的用户。',
+'activeusers-count' => '最近$3天内有$1次编辑',
+'activeusers-from' => '显示用户开始于:',
+'activeusers-hidebots' => '隐藏机器人',
+'activeusers-hidesysops' => '隐藏管理员',
+'activeusers-noresult' => '找不到用户。',
+
 # Special:ListGroupRights
 'listgrouprights' => '用户组权限',
 'listgrouprights-summary' => '以下面是一个在这个维基中所定义出来的用户权限列表,以及它们的访问权。
index d78ddff..d654694 100644 (file)
@@ -2180,6 +2180,15 @@ Template:消除歧義',
 'listusers-noresult' => '找不到用戶。',
 'listusers-blocked' => '(已封禁)',
 
+# Special:ActiveUsers
+'activeusers' => '活躍用戶列表',
+'activeusers-intro' => '這個是在最近$1天之內有一些動作的用戶列表。',
+'activeusers-count' => '最近$3天內有$1次編輯',
+'activeusers-from' => '顯示用戶開始於:',
+'activeusers-hidebots' => '隱藏機器人',
+'activeusers-hidesysops' => '隱藏管理員',
+'activeusers-noresult' => '找不到用戶。',
+
 # Special:ListGroupRights
 'listgrouprights' => '用戶群組權限',
 'listgrouprights-summary' => '以下面是一個在這個wiki中定義出來的用戶權限清單,以及它們的存取權。
index f363c3f..d3e980f 100644 (file)
--- a/load.php
+++ b/load.php
@@ -29,11 +29,7 @@ if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.
        wfPHPVersionError( 'load.php' );
 }
 
-if ( isset( $_SERVER['MW_COMPILED'] ) ) {
-       require ( 'phase3/includes/WebStart.php' );
-} else {
-       require ( __DIR__ . '/includes/WebStart.php' );
-}
+require ( __DIR__ . '/includes/WebStart.php' );
 
 wfProfileIn( 'load.php' );
 
index f2c4ac5..fe422b3 100644 (file)
@@ -79,24 +79,28 @@ class CopyFileBackend extends Maintenance {
 
                        // Do a listing comparison if specified
                        if ( $this->hasOption( 'missingonly' ) ) {
-                               $relFilesSrc = array();
-                               $relFilesDst = array();
-                               foreach ( $srcPathsRel as $srcPathRel ) {
-                                       $relFilesSrc[] = $srcPathRel;
-                               }
                                $dstPathsRel = $dst->getFileList( array(
                                        'dir' => $dst->getRootStoragePath() . "/$backendRel" ) );
                                if ( $dstPathsRel === null ) {
                                        $this->error( "Could not list files in $container.", 1 ); // die
                                }
+                               // Get the list of destination files
+                               $relFilesDstSha1 = array();
                                foreach ( $dstPathsRel as $dstPathRel ) {
-                                       $relFilesDst[] = $dstPathRel;
+                                       $relFilesDstSha1[sha1( $dstPathRel )] = 1;
+                               }
+                               unset( $dstPathsRel ); // free
+                               // Get the list of missing files
+                               $missingPathsRel = array();
+                               foreach ( $srcPathsRel as $srcPathRel ) {
+                                       if ( !isset( $relFilesDstSha1[sha1( $srcPathRel )] ) ) {
+                                               $missingPathsRel[] = $srcPathRel;
+                                       }
                                }
+                               unset( $srcPathsRel ); // free
                                // Only copy the missing files over in the next loop
-                               $srcPathsRel = array_diff( $relFilesSrc, $relFilesDst );
+                               $srcPathsRel = $missingPathsRel;
                                $this->output( count( $srcPathsRel ) . " file(s) need to be copied.\n" );
-                               unset( $relFilesSrc );
-                               unset( $relFilesDst );
                        }
 
                        $batchPaths = array();
index 2e138e0..8576b8a 100644 (file)
@@ -54,15 +54,11 @@ $maintenance->setup();
 $self = $maintenance->getName();
 
 // Detect compiled mode
-if ( isset( $_SERVER['MW_COMPILED'] ) ) {
-       define( 'MW_COMPILED', 1 );
-} else {
-       # Get the MWInit class
-       require_once( "$IP/includes/Init.php" );
-       require_once( "$IP/includes/AutoLoader.php" );
-       # Stub the profiler
-       require_once( "$IP/includes/profiler/Profiler.php" );
-}
+# Get the MWInit class
+require_once( "$IP/includes/Init.php" );
+require_once( "$IP/includes/AutoLoader.php" );
+# Stub the profiler
+require_once( "$IP/includes/profiler/Profiler.php" );
 
 # Start the profiler
 $wgProfiler = array();
@@ -71,9 +67,7 @@ if ( file_exists( "$IP/StartProfiler.php" ) ) {
 }
 
 // Some other requires
-if ( !defined( 'MW_COMPILED' ) ) {
-       require_once( "$IP/includes/Defines.php" );
-}
+require_once( "$IP/includes/Defines.php" );
 require_once( MWInit::compiledPath( 'includes/DefaultSettings.php' ) );
 
 if ( defined( 'MW_CONFIG_CALLBACK' ) ) {
diff --git a/maintenance/hiphop/compiler.conf b/maintenance/hiphop/compiler.conf
deleted file mode 100644 (file)
index 3e01640..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-GenerateSourceInfo = true
-EnableEval = 2
-AllDynamic = true
-EnableHipHopSyntax = true
-EnableHipHopExperimentalSyntax = true
diff --git a/maintenance/hiphop/extra-files b/maintenance/hiphop/extra-files
deleted file mode 100644 (file)
index f07f7c7..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-img_auth.php
-includes/AutoLoader.php
-includes/DefaultSettings.php
-includes/Defines.php
-includes/GlobalFunctions.php
-includes/ImageFunctions.php
-includes/OutputHandler.php
-includes/ProxyTools.php
-includes/SeleniumWebSettings.php
-includes/Setup.php
-includes/StreamFile.php
-includes/WebStart.php
-includes/filerepo/NullRepo.php
-includes/normal/UtfNormalDefines.php
-includes/normal/UtfNormalUtil.php
-index.php
-languages/Names.php
-load.php
-maintenance/Maintenance.php
-maintenance/commandLine.inc
-maintenance/doMaintenance.php
-maintenance/eval.php
-opensearch_desc.php
-profileinfo.php
-redirect.php
-resources/Resources.php
-serialized/serialize.php
-skins/MonoBook.deps.php
-skins/MonoBook.php
-skins/Vector.deps.php
-skins/Vector.php
-thumb.php
-trackback.php
-
diff --git a/maintenance/hiphop/make b/maintenance/hiphop/make
deleted file mode 100644 (file)
index 13e3163..0000000
+++ /dev/null
@@ -1,311 +0,0 @@
-#!/usr/bin/hphpi -f
-<?php
-
-define( 'MW_CONFIG_CALLBACK', 'MakeHipHop::noConfigNeeded' );
-require( __DIR__ . '/../Maintenance.php' );
-
-class MakeHipHop extends Maintenance {
-       function noConfigNeeded() {}
-
-       function execute() {
-               global $wgHipHopBuildDirectory;
-
-               $startTime = time();
-
-               $thisDir = realpath( __DIR__ );
-               $IP = realpath( "$thisDir/../.." );
-               if ( strval( $wgHipHopBuildDirectory ) !== '' ) {
-                       $buildDir = $wgHipHopBuildDirectory;
-               } else {
-                       $buildDir = "$thisDir/build";
-               }
-               $extensionsDir = realpath( MWInit::getExtensionsDirectory() );
-               $outDir = "$buildDir/hiphop-output";
-               $persistentDir = "$buildDir/persistent";
-
-               if ( !is_dir( $buildDir ) ) {
-                       mkdir( $buildDir, 0777, true );
-               }
-               if ( !is_dir( $persistentDir ) ) {
-                       mkdir( $persistentDir, 0777, true );
-               }
-
-               if ( realpath( "$IP/../phase3" ) !== $IP
-                       || realpath( "$IP/../extensions" ) !== $extensionsDir )
-               {
-                       # Set up a fake source directory with the correct layout
-                       $sourceBase = "$buildDir/source";
-                       $this->setupFakeSourceBase( $IP, $extensionsDir, $sourceBase );
-               } else {
-                       $sourceBase = realpath( "$IP/.." );
-                       unlink( "$buildDir/source" );
-               }
-
-               # With the CentOS RPMs, you just get g++44, no g++, so we have to
-               # use the environment
-               if ( isset( $_ENV['CXX'] ) ) {
-                       $cxx = $_ENV['CXX'];
-               } else {
-                       $cxx = 'g++';
-               }
-
-               # Create a function that provides the HipHop compiler version, and
-               # doesn't exist when MediaWiki is invoked in interpreter mode.
-               $version = str_replace( PHP_EOL, ' ', trim( `hphp --version` ) );
-               file_put_contents(
-                       "$buildDir/HipHopCompilerVersion.php",
-                       "<" . "?php\n" .
-                       "function wfHipHopCompilerVersion() {\n" .
-                       "return " . var_export( $version, true ) . ";\n" .
-                       "}\n"
-               );
-
-               # Generate the file list
-               $files = $this->getFileList();
-               file_put_contents(
-                       "$buildDir/file-list",
-                       implode( "\n", $files ) . "\n" );
-
-               # Generate the C++
-               passthru(
-                       'hphp' .
-                       ' --target=cpp' .
-                       ' --format=file' .
-                       ' --input-dir=' . wfEscapeShellArg( $sourceBase ) .
-                       ' --input-list=' . wfEscapeShellArg( "$buildDir/file-list" ) .
-                       ' --inputs=' . wfEscapeShellArg( "$buildDir/HipHopCompilerVersion.php" ) .
-                       ' -c ' . wfEscapeShellArg( "$thisDir/compiler.conf" ) .
-                       ' --parse-on-demand=false' .
-                       ' --program=mediawiki-hphp' .
-                       ' --output-dir=' . wfEscapeShellArg( $outDir ) .
-                       ' --log=3', $ret );
-
-               if ( $ret ) {
-                       $this->error( "hphp hit an error. Stopping build.\n" );
-                       exit( 1 );
-               }
-
-               # Sanity check, quickly make sure we've got an output directory
-               if( !is_dir( $outDir ) ) {
-                       $this->error( "No output directory", true );
-               }
-
-               # Warn about volatile classes
-               $this->checkVolatileClasses( $outDir );
-
-               # Copy the generated C++ files into the source directory for cmake
-               $iter = new RecursiveIteratorIterator(
-                       new RecursiveDirectoryIterator( $outDir ),
-                       RecursiveIteratorIterator::SELF_FIRST );
-               $sourceFiles = array();
-               $regenerateMakefile = false;
-               $numFiles = 0;
-               $numFilesChanged = 0;
-               foreach ( $iter as $sourcePath => $file ) {
-                       $name = substr( $sourcePath, strlen( $outDir ) + 1 );
-                       $sourceFiles[$name] = true;
-                       $destPath = "$persistentDir/$name";
-                       if ( $file->isDir() ) {
-                               if ( !is_dir( $destPath ) ) {
-                                       mkdir( $destPath );
-                               }
-                               continue;
-                       }
-
-                       $numFiles++;
-                       # Remove any files that weren't touched, these may have been removed
-                       # from file-list, we should not compile them
-                       if ( $file->getMTime() < $startTime ) {
-                               if ( file_exists( $destPath ) ) {
-                                       unlink( $destPath );
-                                       # Files removed, regenerate the makefile
-                                       $regenerateMakefile = true;
-                               }
-                               unlink( $sourcePath );
-                               $numFilesChanged++;
-                               continue;
-                       }
-
-                       if ( file_exists( $destPath ) ) {
-                               $sourceHash = md5( file_get_contents( $sourcePath ) );
-                               $destHash = md5( file_get_contents( $destPath ) );
-                               if ( $sourceHash == $destHash ) {
-                                       continue;
-                               }
-                       } else {
-                               # New files added, regenerate the makefile
-                               $regenerateMakefile = true;
-                       }
-                       $numFilesChanged++;
-                       copy( $sourcePath, $destPath );
-               }
-
-               echo "MediaWiki: $numFilesChanged files changed out of $numFiles\n";
-
-               if ( !file_exists( "$persistentDir/CMakeLists.txt" ) ) {
-                       # Run cmake for the first time
-                       $regenerateMakefile = true;
-               }
-
-               # Do our own version of $HPHP_HOME/bin/run.sh, which isn't so broken.
-               # HipHop's RELEASE mode seems to be stuck always on, so symbols get
-               # stripped. Also we will try keeping the generated .o files instead of
-               # throwing away hours of CPU time every time you make a typo.
-
-               chdir( $persistentDir );
-
-               if ( $regenerateMakefile ) {
-                       copy( $_ENV['HPHP_HOME'] . '/bin/CMakeLists.base.txt',
-                               "$persistentDir/CMakeLists.txt" );
-
-                       if ( file_exists( "$persistentDir/CMakeCache.txt" ) ) {
-                               unlink( "$persistentDir/CMakeCache.txt" );
-                       }
-
-                       $cmd = 'cmake' .
-                               " -D CMAKE_BUILD_TYPE:string=" . wfEscapeShellArg( $GLOBALS['wgHipHopBuildType'] ) .
-                               ' -D PROGRAM_NAME:string=mediawiki-hphp';
-
-                       if ( file_exists( '/usr/bin/ccache' ) ) {
-                               $cmd .= ' -D CMAKE_CXX_COMPILER:string=ccache' .
-                                       ' -D CMAKE_CXX_COMPILER_ARG1:string=' . wfEscapeShellArg( $cxx );
-                       }
-
-                       $cmd .= ' .';
-                       echo "$cmd\n";
-                       passthru( $cmd );
-               }
-
-               # Determine appropriate make concurrency
-               # Compilation can take a lot of memory, let's assume that that is limiting.
-               $procs = $this->getNumProcs();
-
-               # Run make. This is the slow step.
-               passthru( 'make -j' . wfEscapeShellArg( $procs ) );
-
-               $elapsed = time() - $startTime;
-
-               echo "Completed in ";
-               if ( $elapsed >= 3600 ) {
-                       $hours = floor( $elapsed / 3600 );
-                       echo $hours . 'h ';
-                       $elapsed -= $hours * 3600;
-               }
-               if ( $elapsed >= 60 ) {
-                       $minutes = floor( $elapsed / 60 );
-                       echo $minutes . 'm ';
-                       $elapsed -= $minutes * 60;
-               }
-               echo $elapsed . "s\n";
-               echo "The MediaWiki executable is at $buildDir/persistent/mediawiki-hphp\n";
-       }
-
-       function checkVolatileClasses( $dir ) {
-               $lines = file( "$dir/sys/dynamic_table_class.cpp" );
-               $classes = array();
-               foreach ( $lines as $line ) {
-                       if ( preg_match( '/^\s+\(const char \*\)"([^"]*)", \(const char \*\)-1/', $line, $m ) ) {
-                               $classes[] = $m[1];
-                       }
-               }
-               if ( !count( $classes ) ) {
-                       print "No volatile classes found\n";
-                       return;
-               }
-               sort( $classes );
-               $classes = array_unique( $classes );
-               print "WARNING: The following classes are volatile: " . implode( ', ', $classes ) . "\n";
-       }
-
-       function getNumProcs() {
-               global $wgHipHopCompilerProcs;
-               if ( $wgHipHopCompilerProcs !== 'detect' ) {
-                       return intval( $wgHipHopCompilerProcs );
-               }
-
-               if ( !file_exists( '/proc/meminfo' ) ) {
-                       return 1;
-               }
-               $mem = false;
-               foreach ( file( '/proc/meminfo' ) as $line ) {
-                       if ( preg_match( '/^MemTotal:\s+(\d+)\s+kB/', $line, $m ) ) {
-                               $mem = intval( $m[1] );
-                               break;
-                       }
-               }
-               if ( $mem ) {
-                       // At least one process
-                       return max( 1, floor( $mem / 1000000 ) );
-               } else {
-                       return 1;
-               }
-       }
-
-       function setupFakeSourceBase( $phase3, $extensions, $dest ) {
-               if ( !file_exists( $dest ) ) {
-                       mkdir( $dest, 0777, true );
-               }
-
-               $this->forceCreateLink( "$dest/phase3", $phase3 );
-               $this->forceCreateLink( "$dest/extensions", $extensions );
-       }
-
-       function forceCreateLink( $target, $link ) {
-               if ( file_exists( $target ) ) {
-                       if ( readlink( $target ) === $link ) {
-                               return;
-                       }
-                       unlink( $target );
-               }
-               symlink( $target, $link );
-       }
-
-       function getFileList() {
-               global $wgAutoloadClasses, $wgAutoloadLocalClasses, $wgCompiledFiles;
-               $inputFiles = array_merge(
-                       array_values( $wgAutoloadClasses ),
-                       array_values( $wgAutoloadLocalClasses ),
-                       $wgCompiledFiles
-               );
-               $processedFiles = array();
-               foreach ( $inputFiles as $file ) {
-                       if ( substr( $file, 0, 1 ) === '/' ) {
-                               $processedFiles[] = $this->absoluteToRelative( $file );
-                       } elseif ( preg_match( '/^extensions/', $file ) ) {
-                               $processedFiles[] = $file;
-                       } else {
-                               $processedFiles[] = "phase3/$file";
-                       }
-               }
-
-               $extraCoreFiles = array_map( 'trim', file( __DIR__ . '/extra-files' ) );
-               foreach ( $extraCoreFiles as $file ) {
-                       if ( $file === '' ) {
-                               continue;
-                       }
-                       $processedFiles[] = "phase3/$file";
-               }
-               return array_unique( $processedFiles );
-       }
-
-       function absoluteToRelative( $file ) {
-               global $IP;
-
-               $coreBase = realpath( $IP ) . '/';
-               $extBase = realpath( MWInit::getExtensionsDirectory() ) . '/';
-               $file = realpath( $file );
-
-               if ( substr( $file, 0, strlen( $extBase ) ) === $extBase ) {
-                       return 'extensions/' . substr( $file, strlen( $extBase ) );
-               } elseif ( substr( $file, 0, strlen( $coreBase ) ) === $coreBase ) {
-                       return 'phase3/' . substr( $file, strlen( $coreBase ) );
-               } else {
-                       $this->error( "The following file is registered for compilation but is not in \$IP or " .
-                               "\$wgExtensionsDirectory: $file \n" );
-                       exit( 1 );
-               }
-       }
-}
-
-$maintClass = 'MakeHipHop';
-require_once( RUN_MAINTENANCE_IF_MAIN );
old mode 100644 (file)
new mode 100755 (executable)
index 1adfe29..cae8788
@@ -1,4 +1,4 @@
-#!/usr/bin/hphpi -f
+#!/usr/bin/hhvm -f
 <?php
 
 require( __DIR__ . '/../Maintenance.php' );
@@ -6,63 +6,16 @@ require( __DIR__ . '/../Maintenance.php' );
 class RunHipHopServer extends Maintenance {
        function __construct() {
                parent::__construct();
-               $this->addOption( 'interpret', 'Run in interpreted mode' );
        }
 
        function execute() {
-               if ( $this->hasOption( 'interpret' ) ) {
-                       $this->runInterpreted();
-               } else {
-                       $this->runCompiled();
-               }
-       }
-
-       function runCompiled() {
-               global $wgHipHopBuildDirectory;
-               $thisDir = realpath( __DIR__ );
-               $IP = realpath( "$thisDir/../.." );
-               if ( strval( $wgHipHopBuildDirectory ) !== '' ) {
-                       $buildDir = $wgHipHopBuildDirectory;
-               } else {
-                       $buildDir = "$thisDir/build";
-               }
-
-               if ( file_exists( "$buildDir/source" ) ) {
-                       $sourceBase = "$buildDir/source";
-               } else {
-                       $sourceBase = realpath( "$IP/.." );
-               }
-
-               passthru(
-                       'cd ' . wfEscapeShellArg( $sourceBase ) . " && " .
-                       'MW_INSTALL_PATH=' . wfEscapeShellArg( $IP ) . ' ' .
-                       wfEscapeShellArg(
-                               "$buildDir/persistent/mediawiki-hphp",
-                               '-c', "$thisDir/server.conf",
-                               '-v', "Server.SourceRoot=$sourceBase",
-                               '-v', "Server.IncludeSearchPaths.0=$sourceBase",
-                               '-v', 'ServerVariables.MW_COMPILED=1',
-                               '--mode=server',
-                               '--port=8080'
-                       ),
-                       $ret
-               );
-               exit( $ret );
-       }
-
-       function runInterpreted() {
-               $thisDir = realpath( __DIR__ );
-               $IP = realpath( "$thisDir/../.." );
-               $sourceBase = realpath( "$IP/.." );
+               global $IP;
 
                passthru(
-                       'cd ' . wfEscapeShellArg( $sourceBase ) . " && " .
-                       'MW_INSTALL_PATH=' . wfEscapeShellArg( $IP ) . ' ' .
+                       'cd ' . wfEscapeShellArg( $IP ) . " && " .
                        wfEscapeShellArg(
-                               'hphpi',
-                               '-c', "$thisDir/server.conf",
-                               '-v', "Server.SourceRoot=$sourceBase",
-                               '-v', "Server.IncludeSearchPaths.0=$sourceBase",
+                               'hhvm',
+                               '-c', __DIR__."/server.conf",
                                '--mode=server',
                                '--port=8080'
                        ),
index 16af0f2..558bdad 100644 (file)
@@ -12,7 +12,7 @@ Debug {
 }
 Server {
        EnableStaticContentCache = false
-       EnableStaticContentFromDisk = false
+       EnableStaticContentFromDisk = true
        AlwaysUseRelativePath = true
 }
 VirtualHost {
@@ -22,7 +22,7 @@ VirtualHost {
                RewriteRules {
                        * {
                                pattern = ^/wiki/(.*)$
-                               to = /phase3/index.php?title=$1
+                               to = /index.php?title=$1
                                qsa = true
                        }
                }
index 97417c5..68e1fb2 100644 (file)
@@ -12,7 +12,8 @@
                                        "mw.log",
                                        "mw.html",
                                        "mw.html.Cdata",
-                                       "mw.html.Raw"
+                                       "mw.html.Raw",
+                                       "mw.hook"
                                ]
                        },
                        {
index 158019b..e5d755e 100644 (file)
@@ -40,6 +40,7 @@ class SyncFileBackend extends Maintenance {
                $this->addOption( 'posdir', 'Directory to read/record journal positions', false, true );
                $this->addOption( 'posdump', 'Just dump current journal position into the position dir.' );
                $this->addOption( 'postime', 'For position dumps, get the ID at this time', false, true );
+               $this->addOption( 'backoff', 'Stop at entries younger than this age (sec).', false, true );
                $this->addOption( 'verbose', 'Verbose mode', false, false, 'v' );
                $this->setBatchSize( 50 );
        }
@@ -88,7 +89,13 @@ class SyncFileBackend extends Maintenance {
                } else {
                        $startFromPosFile = false;
                }
-               $end = $this->getOption( 'end', INF );
+
+               if ( $this->hasOption( 'backoff' ) ) {
+                       $time = time() - $this->getOption( 'backoff', 0 );
+                       $end = (int)$src->getJournal()->getPositionAtTime( $time );
+               } else {
+                       $end = $this->getOption( 'end', INF );
+               }
 
                $this->output( "Synchronizing backend '{$dst->getName()}' to '{$src->getName()}'...\n" );
                $this->output( "Starting journal position is $start.\n" );
index 2823210..270a8b2 100644 (file)
@@ -24,11 +24,7 @@ define( 'MW_CONFIG_CALLBACK', 'Installer::overrideConfig' );
 define( 'MEDIAWIKI_INSTALL', true );
 
 chdir( dirname( __DIR__ ) );
-if ( isset( $_SERVER['MW_COMPILED'] ) ) {
-       require ( 'core/includes/WebStart.php' );
-} else {
-       require( dirname( __DIR__ ) . '/includes/WebStart.php' );
-}
+require( dirname( __DIR__ ) . '/includes/WebStart.php' );
 
 wfInstallerMain();
 
index 4117d97..489ff78 100644 (file)
 ini_set( 'zlib.output_compression', 'off' );
 
 $wgEnableProfileInfo = $wgProfileToDatabase = false;
-if ( isset( $_SERVER['MW_COMPILED'] ) ) {
-       require ( 'core/includes/WebStart.php' );
-} else {
-       require ( __DIR__ . '/includes/WebStart.php' );
-}
+require ( __DIR__ . '/includes/WebStart.php' );
 
 header( 'Content-Type: text/html; charset=utf-8' );
 
index 2835c9c..fc1b18d 100644 (file)
                        }
                }() );
 
-               $( 'textarea, input:text' ).focus( function () {
-                       currentFocused = $(this);
-               });
+               // Apply to dynamically created textboxes as well as normal ones
+               $( document ).on( 'focus', 'textarea, input:text', function () {
+                       currentFocused = $( this );
+               } );
 
                // HACK: make currentFocused work with the usability iframe
                // With proper focus detection support (HTML 5!) this'll be much cleaner
index 716264d..d199132 100644 (file)
@@ -1739,7 +1739,82 @@ var mw = ( function ( $, undefined ) {
                user: {
                        options: new Map(),
                        tokens: new Map()
-               }
+               },
+
+               /**
+                * Registry and firing of events.
+                *
+                * MediaWiki has various interface components that are extended, enhanced
+                * or manipulated in some other way by extensions, gadgets and even
+                * in core itself.
+                *
+                * This framework helps streamlining the timing of when these other
+                * code paths fire their plugins (instead of using document-ready,
+                * which can and should be limited to firing only once).
+                *
+                * Features like navigating to other wiki pages, previewing an edit
+                * and editing itself – without a refresh – can then retrigger these
+                * hooks accordingly to ensure everything still works as expected.
+                *
+                * Example usage:
+                *
+                *     mw.hook( 'wikipage.content' ).add( fn ).remove( fn );
+                *     mw.hook( 'wikipage.content' ).fire( $content );
+                *
+                * Handlers can be added and fired for arbitrary event names at any time. The same
+                * event can be fired multiple times. The last run of an event is memorized
+                * (similar to `$(document).ready` and `$.Deferred().done`).
+                * This means if an event is fired, and a handler added afterwards, the added
+                * function will be fired right away with the last given event data.
+                *
+                * Like Deferreds and Promises, the mw.hook object is both detachable and chainable.
+                * Thus allowing flexible use and optimal maintainability and authority control.
+                * You can pass around the `add` and/or `fire` method to another piece of code
+                * without it having to know the event name (or `mw.hook` for that matter).
+                *
+                *     var h = mw.hook( 'bar.ready' );
+                *     new mw.Foo( .. ).fetch( { callback: h.fire } );
+                *
+                * @class mw.hook
+                */
+               hook: ( function () {
+                       var lists = {};
+
+                       /**
+                        * @method hook
+                        * @member mw
+                        * @param {string} name Name of hook.
+                        * @return {mw.hook}
+                        */
+                       return function ( name ) {
+                               var list = lists[name] || ( lists[name] = $.Callbacks( 'memory' ) );
+
+                               return {
+                                       /**
+                                        * Register a hook handler
+                                        * @param {Function...} handler Function to bind.
+                                        * @chainable
+                                        */
+                                       add: list.add,
+
+                                       /**
+                                        * Unregister a hook handler
+                                        * @param {Function...} handler Function to unbind.
+                                        * @chainable
+                                        */
+                                       remove: list.remove,
+
+                                       /**
+                                        * Run a hook.
+                                        * @param {Mixed...} data
+                                        * @chainable
+                                        */
+                                       fire: function () {
+                                               return list.fireWith( null, slice.call( arguments ) );
+                                       }
+                               };
+                       };
+               }() )
        };
 
 }( jQuery ) );
index e036dc9..9fd2e5e 100644 (file)
                };
 
                /**
-                * Gets the current user's name or a random ID automatically generated and kept in a cookie.
-                *
-                * This ID is persistent for anonymous users, staying in their browser up to 1 year. The
-                * expiration time is reset each time the ID is queried, so in most cases this ID will
-                * persist until the browser's cookies are cleared or the user doesn't visit for 1 year.
+                * Gets the current user's name or the session ID
                 *
                 * @return {string} User name or random session ID
                 */
                this.id = function () {
-                       var id,
-                               name = user.getName();
+                       var name = user.getName();
                        if ( name ) {
                                return name;
                        }
-                       id = $.cookie( 'mediaWiki.user.id' );
-                       if ( typeof id === 'undefined' || id === null ) {
-                               id = user.generateRandomSessionId();
-                       }
-                       // Set cookie if not set, or renew it if already set
-                       $.cookie( 'mediaWiki.user.id', id, {
-                               expires: 365,
-                               path: '/'
-                       } );
-                       return id;
+                       return user.sessionId();
                };
 
                /**
index 60ef758..bd8e596 100644 (file)
                                return util.$content;
                        } )();
 
+                       mw.hook( 'wikipage.content' ).fire( util.$content );
+
                        // Table of contents toggle
                        $tocTitle = $( '#toctitle' );
                        $tocToggleLink = $( '#togglelink' );
index 5c1b6b0..26a7781 100644 (file)
@@ -546,7 +546,6 @@ table.collapsed tr.collapsable {
        float: left;
        margin-bottom: 2em;
        color: #000;
-       font-weight: bold;
 }
 .errorbox {
        border-color: red;
index a0ede09..972ad8f 100644 (file)
@@ -143,13 +143,12 @@ class ParserTest {
                        $wgUser, $wgLang, $wgOut, $wgRequest, $wgStyleDirectory, $wgEnableParserCache,
                        $wgNamespaceAliases, $wgNamespaceProtection, $wgLocalFileRepo,
                        $parserMemc, $wgThumbnailScriptPath, $wgScriptPath,
-                       $wgArticlePath, $wgStyleSheetPath, $wgScript, $wgStylePath, $wgExtensionAssetsPath,
+                       $wgArticlePath, $wgScript, $wgStylePath, $wgExtensionAssetsPath,
                        $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType, $wgLockManagers;
 
                $wgScript = '/index.php';
                $wgScriptPath = '/';
                $wgArticlePath = '/wiki/$1';
-               $wgStyleSheetPath = '/skins';
                $wgStylePath = '/skins';
                $wgExtensionAssetsPath = '/extensions';
                $wgThumbnailScriptPath = false;
@@ -669,7 +668,6 @@ class ParserTest {
                        ),
                        'wgEnableUploads' => self::getOptionValue( 'wgEnableUploads', $opts, true ),
                        'wgStylePath' => '/skins',
-                       'wgStyleSheetPath' => '/skins',
                        'wgSitename' => 'MediaWiki',
                        'wgLanguageCode' => $lang,
                        'wgDBprefix' => $this->db->getType() != 'oracle' ? 'parsertest_' : 'pt_',
index f38d826..71b9e6b 100644 (file)
@@ -3672,9 +3672,10 @@ parsoid
 |}
 !! result
 <table>
+<tbody>
 <tr>
 <td style=""> hello
-</td></tr></table>
+</td></tr></tbody></table>
 
 !! end
 
@@ -6173,6 +6174,19 @@ bar <div>baz</div>
 
 !!end
 
+!!test
+Templates: P-wrapping: 1d. Template preceded by comment-only line
+!!options
+parsoid
+!!input
+<!-- foo -->
+{{echo|Bar}}
+!!result
+<!-- foo -->
+<p>Bar
+</p>
+!!end
+
 !!test
 Templates: Inline Text: 1. Multiple tmeplate uses
 !!input
@@ -12130,6 +12144,30 @@ This won't take interferes with the title rule.
 </p>
 !! end
 
+!! test
+Partly disable title conversion if variant == main language code
+!! options
+language=zh variant=zh title=[[ZH]] showtitle
+!! input
+-{T|zh-cn:CN;zh-tw:TW}-
+!! result
+ZH
+<p>
+</p>
+!! end
+
+!! test
+Partly disable title conversion if variant == main language code, more
+!! options
+language=zh variant=zh title=[[ZH]] showtitle
+!! input
+-{T|TW}-
+!! result
+ZH
+<p>
+</p>
+!! end
+
 !! test
 Raw output of variant escape tags (R flag)
 !! options
@@ -13953,9 +13991,9 @@ parsoid
 ----=foo=
 ----*foo
 !! result
-<hr/>----
-<hr/>=foo=
-<hr/>*foo
+<hr>----
+<hr>=foo=
+<hr>*foo
 !! end
 
 #### --------------- Tables ---------------
@@ -14024,9 +14062,9 @@ parsoid
 |<nowiki>foo|bar</nowiki>
 |}
 !! result
-<table>
+<table><tbody>
 <tr><td>foo|bar
-</td></tr></table>
+</td></tr></tbody></table>
 
 !! end
 
@@ -14040,10 +14078,10 @@ parsoid
 |''it''<nowiki>foo||bar</nowiki>
 |}
 !! result
-<table>
+<table><tbody>
 <tr><td>foo||bar
 </td><td><i>it</i>foo||bar
-</td></tr></table>
+</td></tr></tbody></table>
 
 !! end
 
@@ -14056,9 +14094,9 @@ parsoid
 |foo!!bar
 |}
 !! result
-<table>
+<table><tbody>
 <tr><td>foo!!bar
-</td></tr></table>
+</td></tr></tbody></table>
 
 !! end
 
@@ -14071,9 +14109,9 @@ parsoid
 !foo!bar
 |}
 !! result
-<table>
+<table><tbody>
 <tr><th>foo!bar
-</th></tr></table>
+</th></tr></tbody></table>
 
 !! end
 
@@ -14086,9 +14124,9 @@ parsoid
 !<nowiki>foo!!bar</nowiki>
 |}
 !! result
-<table>
+<table><tbody>
 <tr><th>foo!!bar
-</th></tr></table>
+</th></tr></tbody></table>
 
 !! end
 
@@ -14101,9 +14139,9 @@ parsoid
 !<nowiki>foo||bar</nowiki>
 |}
 !! result
-<table>
+<table><tbody>
 <tr><th>foo||bar
-</th></tr></table>
+</th></tr></tbody></table>
 
 !! end
 
@@ -14446,7 +14484,7 @@ parsoid
 !! input
 <s.ome> text
 !! result
-<p>&lt;s.ome&gt text
+<p>&lt;s.ome&gt; text
 </p>
 !! end
 
@@ -14529,11 +14567,11 @@ parsoid
 | style="color:red|Bar
 |}
 !! result
-<table>
+<table><tbody>
 <tr>
 <td title="Hello world">Foo
 </td><td style="color: red">Bar
-</td></tr></table>
+</td></tr></tbody></table>
 
 !! end
 
@@ -14736,7 +14774,7 @@ parsoid
 <td> <!--c--></td></tr>
 <tr>
 <td><!--c--> <!--d--></td></tr>
-</table>
+</tbody></table>
 
 !!end
 
@@ -14764,7 +14802,7 @@ parsoid
 ''' ''x''' ''
 !!result
 <p><span> <s>x</s></span><s> </s>
-<b> <i>x</i></b><i> </i></span>
+<b> <i>x</i></b><i> </i>
 </p>
 !!end
 
index 3978b8d..ea8387c 100644 (file)
@@ -13,20 +13,3 @@ Running phpunit.php instead is recommended.
 EOF;
        require_once( __DIR__ . "/phpunit.php" );
 }
-
-// Output a notice when running with older versions of PHPUnit
-if ( version_compare( PHPUnit_Runner_Version::id(), "3.6.7", "<" ) ) {
-       echo <<<EOF
-********************************************************************************
-
-These tests run best with version PHPUnit 3.6.7 or better. Earlier versions may
-show failures because earlier versions of PHPUnit do not properly implement
-dependencies.
-
-********************************************************************************
-
-EOF;
-}
-
-/** @todo Check if this is really needed */
-MessageCache::destroyInstance();
index 815edd2..b272d73 100644 (file)
@@ -335,6 +335,7 @@ class DatabaseSqliteTest extends MediaWikiTestCase {
        private function getTables( $db ) {
                $list = array_flip( $db->listTables() );
                $excluded = array(
+                       'external_user', // removed from core in 1.22
                        'math', // moved out of core in 1.18
                        'trackbacks', // removed from core in 1.19
                        'searchindex',
index 3449cc7..d66fac7 100644 (file)
@@ -59,7 +59,6 @@ class NewParserTest extends MediaWikiTestCase {
                $tmpGlobals['wgActionPaths'] = array();
                $tmpGlobals['wgVariantArticlePath'] = false;
                $tmpGlobals['wgExtensionAssetsPath'] = '/extensions';
-               $tmpGlobals['wgStyleSheetPath'] = '/skins';
                $tmpGlobals['wgStylePath'] = '/skins';
                $tmpGlobals['wgEnableUploads'] = true;
                $tmpGlobals['wgThumbnailScriptPath'] = false;
index 11d00f3..40d14e3 100644 (file)
@@ -12,8 +12,6 @@
  * @file
  */
 
-require_once dirname( __DIR__ ) . '/bootstrap.php';
-
 /** Tests for MediaWiki languages/LanguageSr.php */
 class LanguageSrTest extends LanguageClassesTestCase {
        function testEasyConversions() {
index 495c0be..8ee95b7 100644 (file)
@@ -12,8 +12,6 @@
  * @file
  */
 
-require_once dirname( __DIR__ ) . '/bootstrap.php';
-
 /** Tests for MediaWiki languages/LanguageUz.php */
 class LanguageUzTest extends LanguageClassesTestCase {
 
index b1496a9..670c934 100644 (file)
@@ -26,7 +26,6 @@ class UploadFromUrlTestSuite extends PHPUnit_Framework_TestSuite {
                $tmpGlobals['wgScript'] = '/index.php';
                $tmpGlobals['wgScriptPath'] = '/';
                $tmpGlobals['wgArticlePath'] = '/wiki/$1';
-               $tmpGlobals['wgStyleSheetPath'] = '/skins';
                $tmpGlobals['wgStylePath'] = '/skins';
                $tmpGlobals['wgThumbnailScriptPath'] = false;
                $tmpGlobals['wgLocalFileRepo'] = array(
index 3f3c899..1a2bfa1 100644 (file)
@@ -50,7 +50,7 @@
        // of MediaWiki has actually been configured with the required url to that inject.js
        // script. By default it is false.
        if ( QUnit.urlParams.swarmURL && mw.config.get( 'QUnitTestSwarmInjectJSPath' ) ) {
-               document.write( '<scr' + 'ipt src="' + QUnit.fixurl( mw.config.get( 'QUnitTestSwarmInjectJSPath' ) ) + '"></scr' + 'ipt>' );
+               jQuery.getScript( QUnit.fixurl( mw.config.get( 'QUnitTestSwarmInjectJSPath' ) ) );
        }
 
        /**
index e338675..73dcf34 100644 (file)
 
        } );
 
+       QUnit.test( 'mw.hook', 10, function ( assert ) {
+               var hook, add, fire, chars, callback;
+
+               mw.hook( 'test.hook.unfired' ).add( function () {
+                       assert.ok( false, 'Unfired hook' );
+               } );
+
+               mw.hook( 'test.hook.basic' ).add( function () {
+                       assert.ok( true, 'Basic callback' );
+               } );
+               mw.hook( 'test.hook.basic' ).fire();
+
+               mw.hook( 'test.hook.data' ).add( function ( data1, data2 ) {
+                       assert.equal( data1, 'example', 'Fire with data (string param)' );
+                       assert.deepEqual( data2, ['two'], 'Fire with data (array param)' );
+               } );
+               mw.hook( 'test.hook.data' ).fire( 'example', ['two'] );
+
+               mw.hook( 'test.hook.chainable' ).add( function () {
+                       assert.ok( true, 'Chainable' );
+               } ).fire();
+
+               hook = mw.hook( 'test.hook.detach' );
+               add = hook.add;
+               fire = hook.fire;
+               add( function ( x, y ) {
+                       assert.deepEqual( [x, y], ['x', 'y'], 'Detached (contextless) with data' );
+               } );
+               fire( 'x', 'y' );
+
+               mw.hook( 'test.hook.fireBefore' ).fire().add( function () {
+                       assert.ok( true, 'Invoke handler right away if it was fired before' );
+               } );
+
+               mw.hook( 'test.hook.fireTwiceBefore' ).fire().fire().add( function () {
+                       assert.ok( true, 'Invoke handler right away if it was fired before (only last one)' );
+               } );
+
+               chars = [];
+
+               mw.hook( 'test.hook.many' )
+                       .add( function ( chr ) {
+                               chars.push( chr );
+                       } )
+                       .fire( 'x' ).fire( 'y' ).fire( 'z' )
+                       .add( function ( chr ) {
+                               assert.equal( chr, 'z', 'Adding callback later invokes right away with last data' );
+                       } );
+
+               assert.deepEqual( chars, ['x', 'y', 'z'], 'Multiple callbacks with multiple fires' );
+
+               chars = [];
+               callback = function ( chr ) {
+                       chars.push( chr );
+               };
+
+               mw.hook( 'test.hook.variadic' )
+                       .add(
+                               callback,
+                               callback,
+                               function ( chr ) {
+                                       chars.push( chr );
+                               },
+                               callback
+                       )
+                       .fire( 'x' )
+                       .remove(
+                               function () {
+                                       'not-added';
+                               },
+                               callback
+                       )
+                       .fire( 'y' )
+                       .remove( callback )
+                       .fire( 'z' );
+
+               assert.deepEqual(
+                       chars,
+                       ['x', 'x', 'x', 'x', 'y', 'z'],
+                       '"add" and "remove" support variadic arguments. ' +
+                               '"add" does not filter unique. ' +
+                               '"remove" removes all equal by reference. ' +
+                               '"remove" is silent if the function is not found'
+               );
+       } );
+
 }( mediaWiki, jQuery ) );
index ede30e6..669d87e 100644 (file)
--- a/thumb.php
+++ b/thumb.php
  */
 
 define( 'MW_NO_OUTPUT_COMPRESSION', 1 );
-if ( isset( $_SERVER['MW_COMPILED'] ) ) {
-       require( 'core/includes/WebStart.php' );
-} else {
-       require( __DIR__ . '/includes/WebStart.php' );
-}
+require( __DIR__ . '/includes/WebStart.php' );
 
 // Don't use fancy mime detection, just check the file extension for jpg/gif/png
 $wgTrivialMimeDetection = true;